Домашняя страница Определение размера массива
Публикация
Отменить

Определение размера массива

Как обычно в С++ определяют размер массива, а очень просто, используют следующую конструкцию:

1
#define count_of( arg ) ( sizeof( arg ) / sizeof( arg[ 0 ] ) )

Однако она может стать причиной ошибки, если подсунуть туда указатель, не являющийся массивом, например, указатель на функцию. Проблему можно решить следующим образом (взято из исходных кодов проекта Chromium - основы браузера Google Chrome):

1
2
3
template <typename T, size_t N>
char (&ArraySizeHelper(T (&array)[N]))[N];
#define arraysize(array) (sizeof(ArraySizeHelper(array)))

Проблема решается потому, что массив передается по ссылке, а не по указателю.

Публикация защищена лицензией CC BY 4.0 .