Пространства имён
Варианты
Действия

sizeof operator

Материал из cppreference.com
< cpp‎ | language

 
 
Язык С++
Общие темы
Управление программой
Операторы условного выполнения
Операторы повторения
Операторы перехода
Функции
объявление функции
объявление лямбда-функции
шаблон функции
спецификатор inline
спецификаторы исключений (устарело)
спецификатор noexcept (C++11)
Исключения
Пространства имён
объявление пространства имён
псевдонимы пространства имён
Типы
спецификатор decltype (C++11)
Спецификаторы
cv-спецификаторы
спецификаторы продолжительности хранения
спецификатор constexpr (C++11)
спецификатор auto (C++11)
спецификатор alignas (C++11)
Инициализация
Литералы
Выражения
Утилиты
Типы
typedef-объявление
объявление псевдонима типа (C++11)
атрибуты (C++11)
Приведения типов
неявные преобразования
const_cast-преобразование
static_cast-преобразование
dynamic_cast-преобразование
reinterpret_cast-преобразование
C-подобное и функциональное приведение типов
Выделение памяти
Классы
Особые свойства классовых функций
Специальные функции-члены
Шаблоны
шаблон класса
шаблон функции
специализация шаблона
упакованные параметры (C++11)
Разное
Ассемблерные вставки
 
Запросы размера объекта или типа
Оригинал:
Queries size of the object or type
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Используется, когда фактический размер объекта должны быть известны
Оригинал:
Used when actual size of the object must be known
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

Содержание

[править] Синтаксис

sizeof( type )
sizeof expression None
Обе версии возвращают константу типа std::size_t.
Оригинал:
Both versions return a constant of type std::size_t.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Объяснение

1)
возвращает размер в байтах объекта представления type.
Оригинал:
returns size in bytes of the object representation of type.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
2)
возвращает размер в байтах объекта представления типа, который будет возвращен по expression, если оценивать.
Оригинал:
returns size in bytes of the object representation of the type, that would be returned by expression, if evaluated.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Notes

sizeof(char), sizeof(signed char), и sizeof(unsigned char) всегда возвращаются 1, независимо от стоимости CHAR_BIT.
Оригинал:
sizeof(char), sizeof(signed char), and sizeof(unsigned char) always return 1, regardless of the value of CHAR_BIT.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
SizeOf не может быть использована с функцией типа, неполные типы, или битовые поля lvalues ​​.
Оригинал:
sizeof cannot be used with function types, incomplete types, or bit-field lvalues.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
При нанесении на ссылочный тип, то результат будет размер указанного типа.
Оригинал:
When applied to a reference type, the result is the size of the referenced type.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
При применении к типу класса, в результате размер объекта этого класса плюс любые дополнительные обивка требуется разместить такой объект в массиве.
Оригинал:
When applied to a class type, the result is the size of an object of that class plus any additional padding required to place such object in an array.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
При нанесении на пустой тип класса, всегда возвращает 1.
Оригинал:
When applied to an empty class type, always returns 1.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Ключевые слова

sizeof

[править] Пример

Например выходе соответствует системе с 64-разрядными указателями и 32-битных Int .
Оригинал:
The example output corresponds to a system with 64-bit pointers and 32-bit int.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

#include <iostream>
struct Empty {};
struct Bit {unsigned bit:1; };
int main()
{
    Empty e;
    Bit b;
    std::cout << "size of empty class: "     << sizeof e        << '\n'
              << "size of pointer : "        << sizeof &e       << '\n'
//            << "size of function: "        << sizeof(void())  << '\n'  // compile error
//            << "size of incomplete type: " << sizeof(int[])   << '\n'  // compile error
//            << "size of bit field: "       << sizeof b.bit    << '\n'  // compile error
              << "size of array of 10 int: " << sizeof(int[10]) << '\n';
}

Вывод:

size of empty class: 1
size of pointer : 8
size of array of 10 int: 40

[править] См. также