在数组char指针的情况下,'数组名称'是什么意思?在我的代码中: char *str[] = {"forgs", "do", "not", "die"};
printf("%d %d", sizeof(str), sizeof(str[0]));我得到了输出12 2,所以我怀疑是:为什么会有区别?这两个str和str[0]是字符指针,对不对?
3 回答
慕哥6287543
TA贡献1831条经验 获得超10个赞
在大多数情况下,数组名称将衰减为其第一个元素的地址值,并且类型与指向元素类型的指针相同。所以,你会期望裸str值的值等于&str[0]指向指针的类型指针char。
但事实并非如此sizeof。在这种情况下,数组名称保持其类型sizeof,这将是4指针的数组char。
返回类型sizeof是a size_t。如果您有C99编译器,则可以使用%zu格式字符串来打印返回的值sizeof。
婷婷同学_
TA贡献1844条经验 获得超8个赞
它16 4在我的电脑上,我可以解释一下:str是一个数组char*,所以sizeof(str)==sizeof(char*)*4
我不知道你为什么会12 2这样。
- 3 回答
- 0 关注
- 713 浏览
添加回答
举报
0/150
提交
取消
