storleken på operatören i C

Storlek av är en mycket använd operator i C. Det är en unäroperator för kompileringstid som kan användas för att beräkna storleken på dess operand . Resultatet av sizeof är av typen osignerad integral som vanligtvis betecknas med size_t. sizeof kan tillämpas på vilken datatyp som helst, inklusive primitiva typer som heltals- och flyttalstyper, pekartyper eller sammansatta datatyper som struktur, union, etc.

Syntax:

 sizeof ( Expression ); 

var ' Uttryck ' kan vara en datatyp eller en variabel av vilken typ som helst.

Lämna tillbaka: Det returnerar storleken på det givna uttrycket.

Tidskomplexitet: O(1)
Hjälputrymme: O(1)

Användning av operatorn sizeof().

storlek av() operator används på olika sätt beroende på operandtyp.

1. När operanden är en datatyp: När storlek av() används med datatyper som int, float, char... etc returnerar det helt enkelt mängden minne som allokerats till dessa datatyper.

Exempel:

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

Produktion

1 4 4 8 

Notera: sizeof() kan ge olika utdata beroende på maskin, vi har kört vårt program på en 32-bitars gcc-kompilator.

2. När operanden är ett uttryck: När storlek av() används med uttrycket, returnerar det storleken på uttrycket.

Exempel:

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

Produktion

8 

Som vi vet från det första fallet är storleken på int och dubbel 4 respektive 8, a är int variabel medan d är en dubbel variabel. Det slutliga resultatet kommer att bli dubbelt, så resultatet av vårt program är 8 byte.

Typ av operatör

sizeof() är en kompileringstidsoperator. kompileringstid hänvisar till den tidpunkt då källkoden konverteras till en binär kod. Den kör (kör) inte koden inuti ().

Exempel:

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

Produktion

4 11 

Om vi ​​försöker öka värdet på x förblir det detsamma. Detta beror på att x inkrementeras inom parentesen och sizeof() är en kompileringstidsoperator.

Behov av storlek på

1. Så här tar du reda på antalet element i en array: Sizeof kan användas för att beräkna antalet element i arrayen automatiskt.

Exempel:

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

Produktion

Number of elements:11 

2. Så här allokerar du ett minnesblock dynamiskt: sizeof används i stor utsträckning vid dynamisk minnesallokering. Till exempel, om vi vill allokera minne som är tillräckligt för att hålla 10 heltal och vi inte vet storleken på (int) i den specifika maskinen. Vi kan fördela med hjälp av sizeof.

Syntax:

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

För mer information, se artikeln – Tilldela ett minnesblock dynamiskt .