logo

velikost operátoru v C

Velikost je velmi používaný operátor v jazyce C. Jedná se o unární operátor v době kompilace, který lze použít k výpočtu velikost jeho operandu . Výsledek sizeof je typu integrálu bez znaménka, který se obvykle označuje size_t. sizeof lze použít na jakýkoli datový typ, včetně primitivních typů, jako jsou celočíselné typy a typy s plovoucí desetinnou čárkou, typy ukazatelů nebo složené datové typy, jako je struktura, sjednocení atd.

Syntax:

 sizeof ( Expression );>

kde ‚ Výraz ‘ může být datový typ nebo proměnná jakéhokoli typu.



Vrátit se: Vrátí velikost velikosti daného výrazu.

Časová náročnost: O(1)
Pomocný prostor: O(1)

Použití operátoru sizeof().

velikost() operátor se používá různými způsoby podle typu operandu.

1. Když je operand datovým typem: Když velikost() se používá s datovými typy, jako je int, float, char... atd., jednoduše vrací množství paměti přidělené těmto datovým typům.

porovnat s javou

Pří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ýstup

1 4 4 8>

Poznámka: sizeof() může poskytovat různý výstup podle stroje, spustili jsme náš program na 32bitovém kompilátoru gcc.

2. Když je operand výraz: Když velikost() je použit s výrazem, vrací velikost výrazu.

Pří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ýstup

8>

Jak víme z prvního případu, velikost int a double je 4, respektive 8, a je proměnná int, zatímco d je proměnná typu double. Konečný výsledek bude dvojnásobný, takže výstup našeho programu je 8 bajtů.

Typ operátora

sizeof() je operátor v době kompilace. Doba kompilace označuje čas, kdy je zdrojový kód převeden na binární kód. Nespustí (spustí) kód uvnitř ().

Příklad:

C




výhody a nevýhody technologie

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

>

>

Výstup

4 11>

Pokud se pokusíme zvýšit hodnotu x, zůstane stejná. Je to proto, že x se zvyšuje v závorkách a sizeof() je operátor v době kompilace.

Potřeba Sizeofa

1. Chcete-li zjistit počet prvků v poli: Sizeof lze použít k automatickému výpočtu počtu prvků pole.

Pří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;> }>

>

příkaz v uzlu js

>

Výstup

Number of elements:11>

2. Chcete-li dynamicky přidělit blok paměti: sizeof se velmi používá při dynamické alokaci paměti. Například, pokud chceme alokovat paměť, která je dostatečná pro uložení 10 celých čísel a neznáme sizeof(int) v tomto konkrétním stroji. Můžeme alokovat pomocí sizeof.

Syntax:

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

Více informací naleznete v článku – Dynamicky přidělujte blok paměti .