4.8. Оператор sizeofОператор sizeof возвращает размер в байтах объекта или типа данных. Синтаксис его таков: sizeof ( type name ); sizeof ( object ); sizeof object; Результат имеет специальный тип size_t, который определен как typedef в заголовочном файле cstddef. Вот пример использования обеих форм оператора sizeof: #include <cstddef> int ia[] = { 0, 1, 2 }; // sizeof возвращает размер всего массива Применение sizeof к массиву дает количество байтов, занимаемых массивом, а не количество его элементов и не размер в байтах каждого из них. Так, например, в системах, где int хранится в 4 байтах, значением array_size будет 12. Применение sizeof к указателю дает размер самого указателя, а не объекта, на который он указывает: int *pi = new int[ 3 ]; size_t pointer_size = sizeof ( pi ); Здесь значением pointer_size будет память под указатель в байтах (4 в 32-битных
системах), а не массива ia. #include <string> #include <iostream> #include <cstddef> int main() { Результатом работы программы будет: pi: 4 *pi: 4 st1: 12 st2: 12 ps: 4 *ps:12 short : 2 short* : 4 short& : 2 short[3] : 6 Из данного примера видно, что применение sizeof к указателю позволяет узнать
размер памяти, необходимой для хранения адреса. Если же аргументом sizeof является
ссылка, мы получим размер связанного с ней объекта. // char_size == 1 size_t char_size = sizeof( char ); Значение оператора sizeof вычисляется во время компиляции и считается константой. Оно может быть использовано везде, где требуется константное значение, в том числе в качестве размера встроенного массива. Например: // правильно: константное выражение int array[ sizeof( some_type_T )];Назад Вперед Содержание |
Нет комментариев. Оставить комментарий: |