logo

veľkosť operátora v C

Veľkosť je často používaný operátor v jazyku C. Je to unárny operátor v čase kompilácie, ktorý možno použiť na výpočet veľkosť jeho operandu . Výsledok sizeof je typu integrálu bez znamienka, ktorý sa zvyčajne označuje size_t. sizeof možno použiť na akýkoľvek typ údajov, vrátane primitívnych typov, ako sú celočíselné typy a typy s pohyblivou rádovou čiarkou, typy ukazovateľov alebo zložené typy údajov, ako je štruktúra, spojenie atď.

Syntax:

 sizeof ( Expression );>

kde ' Výraz ‘ môže byť dátový typ alebo premenná akéhokoľvek typu.



Návrat: Vráti veľkosť veľkosti daného výrazu.

Časová zložitosť: O(1)
Pomocný priestor: O(1)

Použitie operátora sizeof().

veľkosť() operátor sa používa rôznymi spôsobmi podľa typu operandu.

1. Keď je operand typ údajov: Kedy veľkosť() sa používa s typmi údajov, ako sú int, float, char... atď., jednoducho vráti množstvo pamäte pridelenej týmto typom údajov.

rozloženie mriežky

Príklad:

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;> }>

>

>

Výkon

1 4 4 8>

Poznámka: sizeof() môže poskytovať rôzny výstup podľa stroja, náš program sme spustili na 32-bitovom kompilátore gcc.

2. Keď je operand výrazom: Kedy veľkosť() sa používa s výrazom, vráti veľkosť výrazu.

Príklad:

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;> }>

>

>

Výkon

8>

Ako vieme z prvého prípadu, veľkosť int a double je 4 a 8, a je premenná int, zatiaľ čo d je premenná typu double. Konečný výsledok bude dvojnásobný, takže výstup nášho programu je 8 bajtov.

Typ operátora

sizeof() je operátor v čase kompilácie. čas kompilácie označuje čas, kedy je zdrojový kód konvertovaný na binárny kód. Nevykoná (spustí) kód vo vnútri ().

Príklad:

C




porovnať reťazec java

// 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);> }>

>

mini panel s nástrojmi excel

>

Výkon

4 11>

Ak sa pokúsime zvýšiť hodnotu x, zostane rovnaká. Je to preto, že x sa zvyšuje v zátvorkách a sizeof() je operátor v čase kompilácie.

Potreba Sizeofa

1. Ak chcete zistiť počet prvkov v poli: Sizeof možno použiť na automatický výpočet počtu prvkov poľa.

Príklad:

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;> }>

>

>

Výkon

Number of elements:11>

2. Ak chcete dynamicky prideliť blok pamäte: sizeof sa vo veľkej miere používa pri dynamickom prideľovaní pamäte. Napríklad, ak chceme alokovať pamäť, ktorá je dostatočná na uloženie 10 celých čísel a nepoznáme veľkosť (int) v tomto konkrétnom stroji. Môžeme alokovať pomocou sizeof.

Syntax:

int* ptr = (int*)malloc(10 * sizeof(int));>

Viac informácií nájdete v článku – Dynamicky prideľujte blok pamäte .