C语言数组问题

每天学一点! 2018-11-01 05:04:49
int p[5] ={1,2,3,4,5};
int (&ref)[5] = p;


疑问的是:ref是一个数组的引用,这个数组大小为5,数组元素类型为int,但是为什么右值是p(也就是数组的首地址)

ref引用不是数组吗,怎么右边成了地址?
...全文
60 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
e调布鲁斯 2018-11-08
  • 打赏
  • 举报
回复
右边本来就是地址,你初始化的数组的指针,他一定是地址喽!
致丶青春 2018-11-02
  • 打赏
  • 举报
回复
引用在初始化时,是运算
每天学一点! 2018-11-01
  • 打赏
  • 举报
回复
引用 2 楼 qq_41297918 的回复:
数组名在做运算或者是传递参数时, 会自动退化为指针,这也是为什么传数组首地址时,可以直接用数组名的原因


按照你的解释,好像能解释通。引用并不属于运算
致丶青春 2018-11-01
  • 打赏
  • 举报
回复
数组名在做运算或者是传递参数时, 会自动退化为指针,这也是为什么传数组首地址时,可以直接用数组名的原因
A-De 2018-11-01
  • 打赏
  • 举报
回复
p 这里是数组名,sizeof(p)出来的是20, 而不是4
你说的p是数组的首地址,这个只是在做赋值或运算时,由数组名退化为地址,
int *q = p;
int *q = p + 1;
这样的,这时你 sizeof(q) 就是4

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧