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 .