sizeof – operátor

Získá velikost svého operandu vzhledem k velikosti typu char.

Poznámka:

Informace o operátoru sizeof ... naleznete v tématu Tři tečky a variadické šablony.

Syntaxe

sizeof unary-expression
sizeof ( type-name )

Poznámky

Výsledek operátoru sizeof je typu size_t, celočíselný typ definovaný v souboru include <stddef.h>. Tento operátor vám umožní vyhnout se zadávání velikostí dat závislých na počítačích v programech.

Operand sizeof může být jeden z následujících:

  • Název typu. Chcete-li použít sizeof s názvem typu, musí být název uzavřen v závorkách.

  • Výraz. Při použití s výrazem sizeof je možné zadat s závorkou nebo bez závorek. Výraz se nevyhodnocuje.

sizeof Pokud je operátor použit na objekt typu char, získá 1. sizeof Pokud je operátor použit na matici, získá celkový počet bajtů v dané matici, nikoli velikost ukazatele reprezentované identifikátorem pole. Chcete-li získat velikost ukazatele reprezentované identifikátorem pole, předejte ji jako parametr funkci, která používá sizeof. Příklad:

Příklad

#include <iostream>
using namespace std;

size_t getPtrSize( char *ptr )
{
   return sizeof( ptr );
}

int main()
{
   char szHello[] = "Hello, world!";

   cout  << "The size of a char is: "
         << sizeof( char )
         << "\nThe length of " << szHello << " is: "
         << sizeof szHello
         << "\nThe size of the pointer is "
         << getPtrSize( szHello ) << endl;
}

Ukázkový výstup

The size of a char is: 1
The length of Hello, world! is: 14
The size of the pointer is 4

sizeof Pokud se operátor použije u operátoru class, structnebo union typu, je výsledkem počet bajtů v objektu tohoto typu a všechny odsazení přidané k zarovnání členů na hranicích slova. Výsledek nemusí nutně odpovídat velikosti vypočítané přidáním požadavků na úložiště jednotlivých členů. Možnost kompilátoru /Zp a pragma balíčku ovlivňují hranice zarovnání členů.

Operátor sizeof nikdy nevolí 0, ani pro prázdnou třídu.

Operátor sizeof nelze použít s následujícími operandy:

  • Functions. (Lze však sizeof použít u ukazatelů na funkce.)

  • Bitová pole.

  • Nedefinované třídy.

  • Typ void.

  • Dynamicky přidělená pole.

  • Externí pole.

  • Neúplné typy

  • Závorky s názvy neúplných typů

sizeof Pokud je operátor použit na odkaz, výsledek je stejný, jako kdyby sizeof byl použit na samotný objekt.

Je-li posledním prvkem struktury pole bez velikosti, operátor sizeof vrátí velikost struktury bez tohoto pole.

Operátor sizeof se často používá k výpočtu počtu prvků v poli pomocí výrazu formuláře:

sizeof array / sizeof array[0]

Viz také

Výrazy s unárními operátory
Klíčová slova