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 .