Udostępnij za pośrednictwem


sizeof, operator

Zwraca rozmiar operandu w odniesieniu do rozmiaru typu char.

Uwaga

Aby uzyskać informacje na temat sizeof ... operatora, zobacz Wielokropek i szablony wariadyczne.

Składnia

sizeof unary-expression
sizeof ( type-name )

Uwagi

Wynikiem sizeof operatora jest typ size_t, typ całkowity zdefiniowany w pliku <include stddef.h>. Ten operator pozwala uniknąć określania rozmiarów danych zależnych od maszyny w programach.

Operand sizeof może być jednym z następujących elementów:

  • Nazwa typu. Aby użyć sizeof nazwy typu, nazwa musi być ujęta w nawiasy.

  • Wyrażenie. W przypadku użycia z wyrażeniem sizeof można określić nawiasy lub bez nawiasów. Wyrażenie nie jest oceniane.

sizeof Gdy operator jest stosowany do obiektu typu char, zwraca wartość 1. sizeof Gdy operator jest stosowany do tablicy, zwraca całkowitą liczbę bajtów w tej tablicy, a nie rozmiar wskaźnika reprezentowanego przez identyfikator tablicy. Aby uzyskać rozmiar wskaźnika reprezentowanego przez identyfikator tablicy, przekaż go jako parametr do funkcji, która używa sizeofelementu . Na przykład:

Przykład

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

Przykładowe dane wyjściowe

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

sizeof Gdy operator jest stosowany do classtypu , structlub union , wynik jest liczbą bajtów w obiekcie tego typu, a także wszelkie dopełnienie dodane w celu wyrównania elementów członkowskich na granicach wyrazów. Wynik nie musi odpowiadać rozmiarowi obliczonym przez dodanie wymagań magazynu poszczególnych elementów członkowskich. Opcja /Zp kompilatora i pragma pakietu wpływają na granice wyrównania dla elementów członkowskich.

Operator sizeof nigdy nie zwraca wartości 0, nawet dla pustej klasy.

Nie sizeof można używać operatora z następującymi operandami:

  • Funkcje. (Można jednak sizeof zastosować wskaźniki do funkcji).

  • Pola bitowe.

  • Niezdefiniowane klasy.

  • Typ void.

  • Dynamicznie przydzielane tablice.

  • Tablice zewnętrzne.

  • Niekompletne typy.

  • Nawiasy nazw niekompletnych typów.

Po zastosowaniu sizeof operatora do odwołania wynik jest taki sam, jak w przypadku sizeof zastosowania do samego obiektu.

Jeśli tablica bez określonego rozmiaru jest ostatnim elementem struktury, operator sizeof zwróci rozmiar struktury bez tablicy.

Operator sizeof jest często używany do obliczania liczby elementów w tablicy przy użyciu wyrażenia formularza:

sizeof array / sizeof array[0]

Zobacz też

Wyrażenia z operatorami jednoargumentowymi
Słowa kluczowe