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 .