Оператор 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
типу или struct
union
типу, результатом является число байтов в объекте этого типа, а также любое заполнение, добавленное для выравнивания элементов по границам слова. Результат не обязательно должен соответствовать размеру, вычисляемому путем добавления требований к хранению отдельных членов. Параметр компилятора /Zp и pragma пакета влияют на границы выравнивания элементов.
Оператор sizeof
никогда не дает 0, даже для пустого класса.
Оператор sizeof
нельзя использовать со следующими операндами:
Функции. (Однако
sizeof
можно применить к указателям на функции.)Битовые поля.
Неопределенные классы.
Тип
void
.Динамически создаваемые массивы.
Внешние массивы.
Неполные типы.
Заключенные в скобки имена неполных типов.
sizeof
Если оператор применяется к ссылке, результат такой же, как если бы sizeof
он был применен к самому объекту.
Если безразмерный массив является последним элементом структуры, оператор sizeof
возвращает размер структуры без массива.
Оператор sizeof
часто используется для вычисления количества элементов в массиве с помощью выражения формы:
sizeof array / sizeof array[0]
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по