logo

dimensiunea operatorului în C

Dimensiunea este un operator foarte folosit în C. Este un operator unar în timp de compilare care poate fi folosit pentru a calcula dimensiunea operandului său . Rezultatul sizeof este de tip integral fără semn care este de obicei notat cu size_t. sizeof poate fi aplicat oricărui tip de date, inclusiv tipuri primitive, cum ar fi tipurile întregi și în virgulă mobilă, tipuri de pointer sau tipuri de date compuse, cum ar fi Structură, unire etc.

Sintaxă:

 sizeof ( Expression );>

Unde ' Expresie ‘ poate fi un tip de date sau o variabilă de orice tip.



Întoarcere: Returnează dimensiunea expresiei date.

Complexitatea timpului: O(1)
Spațiu auxiliar: O(1)

Utilizarea operatorului sizeof().

dimensiunea() operatorul este utilizat în moduri diferite în funcție de tipul de operand.

1. Când operandul este un tip de date: Când dimensiunea() este folosit cu tipuri de date precum int, float, char... etc., pur și simplu returnează cantitatea de memorie alocată acelor tipuri de date.

mouse și tipuri de mouse

Exemplu:

C




// C Program To demonstrate> // sizeof operator> #include> int> main()> {> >printf>(>'%lu '>,>sizeof>(>char>));> >printf>(>'%lu '>,>sizeof>(>int>));> >printf>(>'%lu '>,>sizeof>(>float>));> >printf>(>'%lu'>,>sizeof>(>double>));> >return> 0;> }>

>

>

Ieșire

1 4 4 8>

Notă: sizeof() poate da rezultate diferite în funcție de mașină, am rulat programul nostru pe un compilator gcc pe 32 de biți.

2. Când operandul este o expresie: Când dimensiunea() este folosit cu expresia, returnează dimensiunea expresiei.

Exemplu:

C




// C Program To demonstrate> // operand as expression> #include> int> main()> {> >int> a = 0;> >double> d = 10.21;> >printf>(>'%lu'>,>sizeof>(a + d));> >return> 0;> }>

>

>

Ieșire

8>

După cum știm din primul caz, dimensiunea int și double este 4 și, respectiv, 8, a este variabilă int în timp ce d este o variabilă dublă. Rezultatul final va fi dublu, prin urmare rezultatul programului nostru este de 8 octeți.

Tipul operatorului

sizeof() este un operator în timp de compilare. timpul de compilare se referă la momentul în care codul sursă este convertit într-un cod binar. Nu execută (rulează) codul din interiorul ().

Exemplu:

C




elementele de bază ale seleniului

// C Program to illustrate> // that the 'sizeof' operator> // is a 'compile time operator'> #include> int> main(>void>)> {> >int> y;> >int> x = 11;> >// value of x doesn't change> >y =>sizeof>(x++);> >// prints 4 and 11> >printf>(>'%i %i'>, y, x);> >return> (0);> }>

>

>

Ieșire

4 11>

Dacă încercăm să creștem valoarea lui x, aceasta rămâne aceeași. Acest lucru se datorează faptului că x este incrementat în paranteze și sizeof() este un operator de compilare.

Nevoia de Sizeof

1. Pentru a afla numărul de elemente dintr-o matrice: Sizeof poate fi folosit pentru a calcula automat numărul de elemente ale matricei.

Exemplu:

caracter în int java

C




// C Program> // demonstrate the method> // to find the number of elements> // in an array> #include> int> main()> {> >int> arr[] = { 1, 2, 3, 4, 7, 98, 0, 12, 35, 99, 14 };> >printf>(>'Number of elements:%lu '>,> >sizeof>(arr) />sizeof>(arr[0]));> >return> 0;> }>

>

>

Ieșire

Number of elements:11>

2. Pentru a aloca dinamic un bloc de memorie: sizeof este foarte folosit în alocarea dinamică a memoriei. De exemplu, dacă vrem să alocăm memorie suficientă pentru a conține 10 numere întregi și nu cunoaștem dimensiunea (int) în acea mașină specială. Putem aloca cu ajutorul sizeof.

Sintaxă:

int* ptr = (int*)malloc(10 * sizeof(int));>

Pentru mai multe informații, consultați articolul - Alocați un bloc de memorie în mod dinamic .