C sizeof char*数组

Aym*_*man 29 c sizeof

我有一个char*数组如下:

char *tbl[] = { "1", "2", "3" };
Run Code Online (Sandbox Code Playgroud)

如何使用sizeof运算符来获取数组的元素数量,这里3?

下面的确有效,但是它是否正确?

int n = sizeof(tbl) / sizeof(tbl[0]) 
Run Code Online (Sandbox Code Playgroud)

sha*_*oth 36

是,

size_t n = sizeof(tbl) / sizeof(tbl[0])
Run Code Online (Sandbox Code Playgroud)

是最典型的方法.

请注意,使用int数组大小并不是最好的选择.

  • 在尺寸上使用`size_t`有什么问题吗?或者至少是未签名的东西? (11认同)
  • `sizeof(char)`不会为你保存解除引用操作.编译器通过了解其类型来计算`tbl [0]`的大小,并且实际上并不为它生成代码.唯一的`sizeof(char)`而不是`sizeof(tbl [0])`如果数组将其类型从`char`更改为其他内容,将来会遇到问题. (5认同)

AnT*_*AnT 16

较短的,可以说是更清洁的版本看起来像

sizeof tbl / sizeof *tbl
Run Code Online (Sandbox Code Playgroud)

:)

  • 这肯定是有争议的. (16认同)