为了账号安全,请及时绑定邮箱和手机立即绑定

在数组char指针的情况下,'数组名称'是什么意思?

在数组char指针的情况下,'数组名称'是什么意思?

C
Qyouu 2019-08-02 16:19:56
在数组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


查看完整回答
反对 回复 2019-08-02
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

16 4在我的电脑上,我可以解释一下:str是一个数组char*,所以sizeof(str)==sizeof(char*)*4

我不知道你为什么会12 2这样。


查看完整回答
反对 回复 2019-08-02
  • 3 回答
  • 0 关注
  • 648 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信