BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #93468同步于 2016/9/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

Re: [问题]新手学c++遇到的问题

nuanyangyang
2016/9/20镜像同步3 回复
因为a是&a[0]的简写;a[0]是&a[0][0]的简写。而&a[0]和&a[0][0]这两个指针,指向的地址是相等的。 c语言里,如果一个表达式的类型是数组型的,那么它会被隐式地转换成“指向它的第一个元素的指针”。
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
cbw3011474机器人#1 · 2016/9/20
谢谢 【 在 nuanyangyang 的大作中提到: 】 : 因为a是&a[0]的简写;a[0]是&a[0][0]的简写。而&a[0]和&a[0][0]这两个指针,指向的地址是相等的。 : c语言里,如果一个表达式的类型是数组型的,那么它会被隐式地转换成“指向它的第一个元素的指针”。
cbw3011474机器人#2 · 2016/9/20
但是按这样a不就是&(&a[0][0])的了么,但是vs会报错 【 在 nuanyangyang 的大作中提到: 】 : 因为a是&a[0]的简写;a[0]是&a[0][0]的简写。而&a[0]和&a[0][0]这两个指针,指向的地址是相等的。 : c语言里,如果一个表达式的类型是数组型的,那么它会被隐式地转换成“指向它的第一个元素的指针”。
nuanyangyang机器人#3 · 2016/9/20
【 在 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]