31

我有一个char*数组如下:

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

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

以下确实有效,但它正确吗?

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

3 回答 3

40

是的,

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

是最典型的方法。

请注意,使用int数组大小​​不是最好的主意。

于 2009-10-13T12:34:46.607 回答
19

更短且可以说更简洁的版本看起来像

sizeof tbl / sizeof *tbl

:)

于 2009-10-13T16:46:22.400 回答
4

是的,它将为您提供数组 tb1 中的元素数量。

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

解释:

sizeof(tb1)将给出整个数组的大小,即 tb1 = 3 字节

sizeof(tb1[0])给出字符的大小,因为 tb1[0] 给出一个字符值(地址 tb1+0 处的值)= 1 字节

这两者的划分会给你3个元素

于 2013-08-07T14:18:12.803 回答