De grootte van is een veelgebruikte operator in de C. Het is een unaire operator tijdens het compileren die kan worden gebruikt om de grootte van zijn operand . Het resultaat van sizeof is van het niet-ondertekende integraaltype dat gewoonlijk wordt aangegeven met size_t. sizeof kan worden toegepast op elk gegevenstype, inclusief primitieve typen zoals integer- en drijvende-kommatypen, pointertypen of samengestelde gegevenstypen zoals structuur, unie, enz.
Syntaxis:
sizeof ( Expression );>
waar ' Uitdrukking ‘ kan een gegevenstype zijn of een variabele van elk type.
Opbrengst: Het retourneert de grootte van de gegeven expressie.
Tijdcomplexiteit: O(1)
Hulpruimte: O(1)
Gebruik van de operator sizeof().
De grootte van() operator wordt op verschillende manieren gebruikt, afhankelijk van het operandtype.
1. Wanneer de operand een gegevenstype is: Wanneer De grootte van() wordt gebruikt met de gegevenstypen zoals int, float, char ... enz. Het retourneert eenvoudigweg de hoeveelheid geheugen die aan die gegevenstypen is toegewezen.
git push-opdracht
Voorbeeld:
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;> }> |
>
>Uitvoer
1 4 4 8>
Opmerking: sizeof() kan verschillende uitvoer opleveren afhankelijk van de machine. We hebben ons programma op een 32-bit gcc-compiler uitgevoerd.
2. Wanneer de operand een expressie is: Wanneer De grootte van() wordt gebruikt met de expressie, retourneert het de grootte van de expressie.
Voorbeeld:
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;> }> |
>
>Uitvoer
8>
Zoals we weten uit de eerste casusgrootte van int en double is respectievelijk 4 en 8, is a een int-variabele, terwijl d een dubbele variabele is. Het eindresultaat zal dubbel zijn. Daarom is de uitvoer van ons programma 8 bytes.
Type exploitant
sizeof() is een operator tijdens het compileren. compileertijd verwijst naar het tijdstip waarop de broncode wordt omgezet naar een binaire code. Het voert de code binnen () niet uit.
Voorbeeld:
C
css vetgedrukte tekst
// 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);> }> |
>
>Uitvoer
4 11>
Als we proberen de waarde van x te verhogen, blijft deze hetzelfde. Dit komt omdat x binnen de haakjes wordt opgehoogd en sizeof() een operator tijdens het compileren is.
Behoefte aan grootte van
1. Om het aantal elementen in een array te achterhalen: Sizeof kan worden gebruikt om het aantal elementen van de array automatisch te berekenen.
Voorbeeld:
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;> }> |
zoekalgoritmen
>
>Uitvoer
Number of elements:11>
2. Om een geheugenblok dynamisch toe te wijzen: sizeof wordt veel gebruikt bij dynamische geheugentoewijzing. Als we bijvoorbeeld geheugen willen toewijzen dat voldoende is om 10 gehele getallen te bevatten en we de grootte van (int) in die specifieke machine niet weten. We kunnen toewijzen met behulp van sizeof.
Syntaxis:
int* ptr = (int*)malloc(10 * sizeof(int));>
Voor meer informatie, zie het artikel – Wijs dynamisch een geheugenblok toe .