在数组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 关注
- 648 浏览
添加回答
举报
0/150
提交
取消