У меня есть массив char* следующим образом:
char*
char *tbl[] = { "1", "2", "3" };
Как мне использовать оператор sizeof для получения количества элементов массива, здесь 3?
sizeof
Ниже работает, но правильно ли?
int n = sizeof(tbl) / sizeof(tbl[0])
Да,
size_t n = sizeof(tbl) / sizeof(tbl[0])
- наиболее типичный способ сделать это.
Обратите внимание, что использование int для размеров массивов - не лучшая идея.
int
Более короткая и, возможно, более чистая версия будет выглядеть как
sizeof tbl / sizeof *tbl
:)
Да, он даст вам количество элементов в массиве tb1.
Интерпретация:
sizeof (tb1) даст размер всего массива, т.е. tb1 = 3 байта
sizeof (tb1 [0]) дает размер символа, так как tb1 [0] дает значение символа (значение по адресу tb1 + 0) = 1 байт
Разделение этих двух даст вам 3 элемента