返回信息流因为a是&a[0]的简写;a[0]是&a[0][0]的简写。而&a[0]和&a[0][0]这两个指针,指向的地址是相等的。
c语言里,如果一个表达式的类型是数组型的,那么它会被隐式地转换成“指向它的第一个元素的指针”。
这是一条镜像帖。来源:北邮人论坛 / cpp / #93468同步于 2016/9/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
Re: [问题]新手学c++遇到的问题
nuanyangyang
2016/9/20镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
谢谢
【 在 nuanyangyang 的大作中提到: 】
: 因为a是&a[0]的简写;a[0]是&a[0][0]的简写。而&a[0]和&a[0][0]这两个指针,指向的地址是相等的。
: c语言里,如果一个表达式的类型是数组型的,那么它会被隐式地转换成“指向它的第一个元素的指针”。
但是按这样a不就是&(&a[0][0])的了么,但是vs会报错
【 在 nuanyangyang 的大作中提到: 】
: 因为a是&a[0]的简写;a[0]是&a[0][0]的简写。而&a[0]和&a[0][0]这两个指针,指向的地址是相等的。
: c语言里,如果一个表达式的类型是数组型的,那么它会被隐式地转换成“指向它的第一个元素的指针”。
【 在 cbw3011474 的大作中提到: 】
: 但是按这样a不就是&(&a[0][0])的了么,但是vs会报错
不是。a就是&a[0],但&a[0]不会变成&&a[0][0]。这是3个特例之一。以下三个特例中,如果a是数组类型,那么a ==> &a[0]这种隐式转换不会发生:
sizeof(a) 不是 sizeof(&a[0])
_Alignof(a) 不是 _Alignof(&a[0])
&a 不是 &&a[0]