C sizeof char *数组

时间:2009-10-13 12:33:06

标签: c sizeof

我有一个char*数组,如下所示:

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

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

以下确实有效,但这是正确的吗?

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

3 个答案:

答案 0 :(得分:35)

是,

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

是最常见的方法。

请注意,使用int表示数组大小不是最佳选择。

答案 1 :(得分:14)

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

sizeof tbl / sizeof *tbl

:)

答案 2 :(得分:2)

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

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

解读:

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

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

这两个分区将为您提供 3个元素