Подтвердить что ты не робот

C sizeof char * массив

У меня есть массив char* следующим образом:

char *tbl[] = { "1", "2", "3" };

Как использовать оператор sizeof для получения количества элементов массива, здесь 3?

Ниже было сделано, но верно ли это?

int n = sizeof(tbl) / sizeof(tbl[0]) 
4b9b3361

Ответ 1

Да,

size_t n = sizeof(tbl) / sizeof(tbl[0])

- наиболее типичный способ сделать это.

Обратите внимание, что использование int для размеров массива - не самая лучшая идея.

Ответ 2

Более короткая и, возможно, более чистая версия будет выглядеть как

sizeof tbl / sizeof *tbl

:)

Ответ 3

Да, это даст вам количество элементов в массиве tb1.

int n = sizeof(tbl) / sizeof(tbl[0])

Интерпретация:

sizeof (tb1) предоставит размер всего массива i.e, tb1 = 3 байта

sizeof (tb1 [0]) дает размер символа, так как tb1 [0] дает значение символа (значение по адресу tb1 + 0) = 1 байт

Разделение этих двух даст вам 3 элемента