operator sizeof v C

Sizeof je pogosto uporabljen operator v C. Je unarni operator v času prevajanja, ki se lahko uporablja za izračun velikost njegovega operanda . Rezultat sizeof je nepredznačenega integralnega tipa, ki je običajno označen z size_t. sizeof je mogoče uporabiti za kateri koli podatkovni tip, vključno s primitivnimi tipi, kot so celoštevilski tipi in tipi s plavajočo vejico, tipi kazalcev ali sestavljeni podatkovni tipi, kot so struktura, unija itd.

Sintaksa:

 sizeof ( Expression ); 

kje ' Izraz ' je lahko podatkovni tip ali spremenljivka katere koli vrste.

Vrnitev: Vrne velikost velikosti danega izraza.

Časovna zapletenost: O(1)
Pomožni prostor: O(1)

Uporaba operatorja sizeof().

sizeof() operator se uporablja na različne načine glede na vrsto operanda.

1. Ko je operand podatkovni tip: Kdaj sizeof() se uporablja s podatkovnimi tipi, kot so int, float, char… itd. preprosto vrne količino pomnilnika, dodeljenega tem podatkovnim tipom.

primer:

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;> }>

Izhod

1 4 4 8 

Opomba: sizeof() lahko daje drugačen izhod glede na stroj, naš program smo izvajali na 32-bitnem prevajalniku gcc.

2. Ko je operand izraz: Kdaj sizeof() se uporablja z izrazom, vrne velikost izraza.

primer:

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;> }>

Izhod

8 

Kot vemo iz prvega primera, sta velikosti int in double 4 oziroma 8, a je spremenljivka int, medtem ko je d dvojna spremenljivka. Končni rezultat bo dvojni, zato je rezultat našega programa 8 bajtov.

Vrsta operaterja

sizeof() je operater v času prevajanja. čas prevajanja se nanaša na čas, ko se izvorna koda pretvori v binarno kodo. Ne izvaja (zažene) kode znotraj ().

primer:

C




// 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);> }>

Izhod

4 11 

Če poskušamo povečati vrednost x, ostane enaka. To je zato, ker se x povečuje znotraj oklepajev in je sizeof() operater v času prevajanja.

Potreba po Sizeof

1. Če želite izvedeti število elementov v matriki: Sizeof lahko uporabite za samodejni izračun števila elementov matrike.

primer:

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;> }>

Izhod

Number of elements:11 

2. Če želite dinamično dodeliti blok pomnilnika: sizeof se veliko uporablja pri dinamičnem dodeljevanju pomnilnika. Na primer, če želimo dodeliti pomnilnik, ki zadostuje za shranjevanje 10 celih števil, in ne poznamo sizeof(int) v tem stroju. Dodelimo lahko s pomočjo sizeof.

Sintaksa:

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

Za več informacij si oglejte članek – Dinamično dodelite blok pomnilnika .