Оператор sizeof

Возвращает размер операнда относительно размера типа char.

Примечание.

Дополнительные сведения об операторе см. в разделе "Многоточиеsizeof ..." и "Шаблоны вариативных".

Синтаксис

sizeof unary-expression
sizeof ( type-name )

Замечания

Результатом sizeof оператора является тип size_t, целочисленный тип, определенный в файле include stddef.h><. Этот оператор позволяет избежать задания зависимых от компьютера размера данных в программах.

Операнд, который sizeof может быть одним из следующих элементов:

  • Имя типа. Чтобы использовать sizeof имя типа, имя должно быть заключено в скобки.

  • Выражение . При использовании с выражением sizeof можно указать скобки или без нее. Значение выражения не вычисляется.

sizeof Когда оператор применяется к объекту типаchar, он возвращает значение 1. sizeof Если оператор применяется к массиву, он выдает общее количество байтов в этом массиве, а не размер указателя, представленного идентификатором массива. Чтобы получить размер указателя, представленного идентификатором массива, передайте его в качестве параметра в функцию, которая использует sizeof. Например:

Пример

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

Образец вывода

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

sizeof Если оператор применяется к classтипу или structunion типу, результатом является число байтов в объекте этого типа, а также любое заполнение, добавленное для выравнивания элементов по границам слова. Результат не обязательно должен соответствовать размеру, вычисляемому путем добавления требований к хранению отдельных членов. Параметр компилятора /Zp и pragma пакета влияют на границы выравнивания элементов.

Оператор sizeof никогда не дает 0, даже для пустого класса.

Оператор sizeof нельзя использовать со следующими операндами:

  • Функции. (Однако sizeof можно применить к указателям на функции.)

  • Битовые поля.

  • Неопределенные классы.

  • Тип void.

  • Динамически создаваемые массивы.

  • Внешние массивы.

  • Неполные типы.

  • Заключенные в скобки имена неполных типов.

sizeof Если оператор применяется к ссылке, результат такой же, как если бы sizeof он был применен к самому объекту.

Если безразмерный массив является последним элементом структуры, оператор sizeof возвращает размер структуры без массива.

Оператор sizeof часто используется для вычисления количества элементов в массиве с помощью выражения формы:

sizeof array / sizeof array[0]

См. также

Выражения с унарными операторами
Ключевые слова