Определение количества элементов и размера массива

Количество элементов массива задается при объявлении и не может быть изменено позже. Поэтому лучше количество элементов сохранить в константе или макросе и в дальнейшем указывать эту константу, например, при переборе элементов массива. Чтобы получить количество элементов массива динамически при выполнении программы, нужно общий размер массива в байтах разделить на размер типа. Получить эти размеры можно с помощью оператора sizeof. Пример динамического определения количества элементов массива:

int arr[15] = {0};
std::cout << sizeof(arr) / sizeof(int) << std::endl; // 15

Можно также воспользоваться макросом _countof():

// #include <cstdlib>
int arr[15] = {0};
std::cout << _countof(arr) << std::endl; // 15

Если мы сохраним адрес первого элемента массива в указателе и попробуем определить количество элементов массива через него, то ничего не получится. Результатом будет размер указателя:

int arr[15] = {0};
int *p = arr;
std::cout << sizeof(arr) << std::endl; // 60
std::cout << sizeof(p) << std::endl;   // Размер указателя!!!
// Значение в проекте Test64: 8

Объем памяти (в байтах), занимаемый массивом, определяется так:

<Объем памяти> = sizeof(<Массив>)
<Объем памяти> = sizeof(<Тип>) * <Количество элементов>

Пример:

int arr[3] = {10, 20, 30};
std::cout << sizeof(arr) << std::endl;     // 12
std::cout << sizeof(int) * 3 << std::endl; // 12

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов