[問題] 陣列這個變數的位置

作者: 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