størrelsen på operatøren i C
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.
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
// 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);> }> |
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 .