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