字符指针数组的大小

就是比如我定义
char *abc[3] = {"one", "two", "three"};
然后我再用
temp = sizeof(abc) / sizeof(char);
为什么得到的temp值是4?

不认为会是4
应该是12 如果是16位机 应该是6 无论如何不应该是4
任何情况下sizeof(char) 应为1
所以temp就是sizeof(abc)的值
对于char *abc[3]
sizeof(abc)=sizeof(char *) *3
而sizeof(char *)的值,就是地址总线带宽的值(等同于sizeof(int))。最常用的32位机
这个值是4
所以sizeof(abc)的值应为12

测试程序
int main()
{
char *abc[3] = {"one", "two", "three"};
printf("%d\n", sizeof(abc)/sizeof(char));
}

输出
12
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-20
应该是12

首先要清楚,无论什么类型的指针都是4个字节的,sizeof(char *) == sizeof(int *);

所以sizeof(abc)是3个指针的大小,也就是12个字节
sizeof(char)是1,因此temp应该是12
第2个回答  2013-06-25

应该是12啊,你用的什么编译器

vs2012结果是12

相似回答