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.
lista metoder java
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
sträng understräng
// 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
år in i kvartalen
// 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 .