关于一维数组a与&a的问题

关于一维数组a与&a的问题

a存放的是数组的首地址,是个地址常量,表示数组的首地址,&a存放的是a的地址,但是输出它们却得到相同的值,那意思是a的地址和a存放的值是同样的,也就是说a=数组的首地址=地址常量a的地址,我觉得特别矛盾。

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

哥们儿我看你是进入理解的误区了,发表下拙见:

&是去地址符号,&a[0]拿到的是数组a的首地址,假如我拿到的是1FXXX这个值,这里总不能再问1FXXX存在哪儿吧,它就是一个地址常量,你问题中的a意思其实跟&a[0]一样,直接输出数组名a不会输出数组内容,而是拿到数组的首地址,这门语言的逻辑就是这么来的,它是个确定常量,1FXXX,不能修改。像前面不能问&a[0]存在哪一样,你也不能问a存在哪,因为有了数组a,才会有了这个首地址,&a得到的也是a的首地址,a=&a=&a[0],只不过&a跟a相比,参与运算时代表的意义不同,你了解这个就可以了,别把自己给绕进去了。

  • 请叫我deeply 提问者 #1
    哈哈哈兄台高见!我茅塞顿开,豁然开朗,谢谢!
    2018-03-13 17:23:32
imooc_澈 2018-03-12 19:30:18

a是一个地址常量,它的值为数组a的首地址&a[0],&a也是数组a的首地址,即数组a第一个元素的地址&a[0],只不过它们的意义不一样,你可以从跨度上来理解,a+1,会指向数组第二个元素,它的值也就是&a[1],而&a+1的地址跨度是一整个数组,如果是int型的数组,有3个元素,那么&a+1指向的是3个字节之后的地址了。

如果解决了你的问题,请采纳,祝学习愉快~

  • 提问者 请叫我deeply #1
    谢谢老师,你说的我懂,但是可能是我没问清楚,a是数组的首地址,那a的地址也是a数组的首地址,虽然它们代表的意义不一样但是它们是同一个地址,即同一个地址既存放了数组的首地址,又存放了地址常量a的地址,我觉得太矛盾了。
    2018-03-12 19:45:53
  • imooc_澈 回复 提问者 请叫我deeply #2
    没有存放a的地址 &a里的a代表的是数组a,它们的值都是数组第一个元素所在的内存地址。
    2018-03-12 20:02:37
  • 提问者 请叫我deeply 回复 imooc_澈 #3
    啊,这样啊,那如何访问地址常量a所存放的地址呢
    2018-03-12 20:14:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
C++零基础入门 热门编程语言 二级考试必备
  • 参与学习       529    人
  • 提交作业       110    份
  • 解答问题       594    个

无论您是零基础、还是想晋升,亦或是想转型,C++无疑都是最佳选择。本路径共分为基础语法、指针与引用、面向对象三大模块,为你开启入门C++编程的大门!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师