[问题] 阵列这个变量的位置

楼主: musicJD (J.D.)   2014-10-20 09:40:28
想请问一下
int a[3] = {1,2,3};
cout << a << endl;
cout << &a << endl;
为什么印出来会是一样的
照理说 a这个变量 有本身它自己所在的内存位置啊
我知道 "阵列不等于指标" 只是有时可以decay成指标
难道是因为这点
Compiler特别设计 自动把 &a 看成 &a[0]吗?
作者: CaptainH (Cannon)   2014-10-20 09:50:00
&a和&a[0]的值相等 但意义不同也可以说是 用第一个元素的位址代表整个阵列的位址
作者: purpose (秀才遇到肥宅兵)   2014-10-20 11:00:00
因为你的照理说,a..自己所在的内存位置...是错的
作者: iloveyouever (佚名)   2014-10-20 11:05:00
cout<<*a<<endl;
作者: Feis (永远睡不着 @@)   2014-10-20 12:16:00
a 的值不是 a[0] 的位置. a 是代表整个阵列
作者: uranusjr (←這人是超級笨蛋)   2014-10-20 12:42:00
C 的阵列就是一块连续的内存, 所以 a 的位置就是这块连续内存的开头, 所以就等于 a[0] 的位置
作者: carylorrk (carylorrk)   2014-10-20 16:30:00
为什么你用 struct 时没有同样的困扰呢?
作者: MOONRAKER (㊣牛鹤鳗毛人)   2014-10-20 22:15:00
这是规定的 才不会有谁帮理发师刮胡子的问题(BULLSHIT)
作者: peoplewc (dong')   2014-10-25 01:36:00
深入浅出c

Links booklink

Contact Us: admin [ a t ] ucptt.com