logo

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.

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 .