Størrelsen av er en mye brukt operator i C. Det er en kompileringstids unær operator som kan brukes til å beregne størrelsen på operanden . Resultatet av sizeof er av typen unsigned integral som vanligvis betegnes med size_t. sizeof kan brukes på alle datatyper, inkludert primitive typer som heltalls- og flyttallstyper, pekertyper eller sammensatte datatyper som struktur, union, etc.
Syntaks:
sizeof ( Expression );>
hvor ' Uttrykk ' kan være en datatype eller en variabel av hvilken som helst type.
Komme tilbake: Den returnerer størrelsen på det gitte uttrykket.
Tidskompleksitet: O(1)
Hjelpeplass: O(1)
Bruk av sizeof() operator
størrelsen av() operator brukes på forskjellige måter i henhold til operandtypen.
1. Når operanden er en datatype: Når størrelsen av() brukes med datatyper som int, float, char ... osv. returnerer den ganske enkelt mengden minne som er allokert til disse datatypene.
ops
Eksempel:
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;> }> |
>
>Produksjon
1 4 4 8>
Merk: sizeof() kan gi forskjellig utgang avhengig av maskin, vi har kjørt programmet vårt på en 32-bits gcc-kompilator.
2. Når operanden er et uttrykk: Når størrelsen av() brukes med uttrykket, returnerer det størrelsen på uttrykket.
Eksempel:
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;> }> |
>
>Produksjon
8>
Som vi vet fra det første tilfellet er størrelsen på int og double henholdsvis 4 og 8, a er int variabel mens d er en dobbel variabel. Det endelige resultatet vil være dobbelt, derfor er produksjonen av programmet vårt 8 byte.
Type operatør
sizeof() er en kompileringstidsoperatør. kompileringstid refererer til tidspunktet da kildekoden konverteres til en binær kode. Den kjører (kjører) ikke koden inne i ().
Eksempel:
C
df loc
// 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);> }> |
hvem er freddie mercury
>
>Produksjon
4 11>
Hvis vi prøver å øke verdien av x, forblir den den samme. Dette er fordi x økes innenfor parentesen og sizeof() er en kompileringstidsoperatør.
Behov for Sizeof
1. For å finne ut antall elementer i en matrise: Sizeof kan brukes til å beregne antall elementer i matrisen automatisk.
Eksempel:
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;> }> |
>
>Produksjon
Number of elements:11>
2. Slik tildeler du en minneblokk dynamisk: sizeof er mye brukt i dynamisk minneallokering. For eksempel, hvis vi ønsker å tildele minne som er tilstrekkelig til å inneholde 10 heltall og vi ikke vet størrelsen på (int) i den aktuelle maskinen. Vi kan tildele ved hjelp av sizeof.
Syntaks:
int* ptr = (int*)malloc(10 * sizeof(int));>
For mer informasjon, se artikkelen – Tildel en minneblokk dynamisk .