розмір типу int_t element_size = array_size/sizeof (int);
Застосування sizeof до масиву дає кількість байтів, займаних масивом, а не кількість його елементів і не розмір в байтах кожного з них. Так, наприклад, в системах, де int зберігається в 4 байтах, значенням array_size буде 12. Застосування sizeof до покажчика дає розмір самого покажчика, а не об'єкта, на який він вказує:
int * pi = new int [3]; _t pointer_size = sizeof (pi);
Тут значенням pointer_size буде пам'ять під покажчик в байтах (4 в 32-бітних системах), а не масиву ia. Ось приклад програми, що використовує оператор sizeof:
# include
# include
# include main () {_t ia; = sizeof (ia);// правильно = sizeof ia;// правильно
// ia = sizeof int;// помилка = sizeof (int);// правильно * pi = new int [12]; <<"pi:" << sizeof (pi)
<<"* pi:" <
<
// sizeof рядка не залежить від
// її реальної довжини
string stl ("foobar");
string st2 ("a mighty oak"); * ps = &stl; <<"st1:" <
<<"st2:" <
<<"ps: sizeof (ps)
<<"* ps:" <
<
}
Результатом роботи програми буде :: 4 * pi: 4
st1: 12 st2: 12 ps: 4 * ps: 12: 2
short *: 4 &: 2 [3]: 6
З даного прикладу видно, що застосування sizeof до покажчика дозволяє дізнатися розмір пам'яті, необхідної для зберігання адреси. Якщо ж аргументом sizeof є посилання, ми отримаємо розмір пов'язаного з нею об'єкта. Гарантується, що в будь реалізації С + + розмір типу char дорівнює 1. br/>
// char_size == 1_t char_size = sizeof (char);
Значення оператора sizeof обчислюється під час компіляції і вважається константою. Воно може бути використано скрізь, де потрібно константне значення, в тому числі в якості розміру вбудованого масиву. Наприклад:
// правильно: константний вираз
int array [sizeof (some_type_T)];
надзвичайно корисний для багатьох видів обробок списків. Елементи в строковому списку можуть бути вставлені, переміщені і відсортовані. p align="justify"> Список може бути сформований рядок за рядком, або завантажений з великою рядки розділеної комою або навіть з текстового файлу. TStringList ...