Re: [問題] 指標常數的問題
※ 引述《guanrulee (Cobra)》之銘言:
: 最近在看C語言教學手冊
: 他說如果宣告一個 int a[3] = {0, 1, 2};
: 假設 a[0] 位址是 1400 這個位址存放的值是 0
: a[1] 位址是 1404 這個位址存放的值是 1
: a[2] 位址是 1408 這個位址存放的值是 2
: 但他又說 a 是一個指標常數 位址是1400 裡面存放的值也是 1400
: 我知道為什麼他值是1400
: 但我不了解的是
: 同樣的1400位址 怎麼可以又存 0這個int數值 又存 位址1400 呢?
: 也就是為什麼他同時可以當指標 又當 int呢?
: 內部運作是如何解釋這個狀況呢 謝謝~
書上這話其實有點誤導
位址 1400 的這地方存的的確是 0 這個值
而 1400 這值只不過是綁在 a 這個符號上而已
也就是說 當 a 這個符號解釋做指標常數時
它就會代 1400 這個指標進去
(注意是代入 也就是這事情是 compiler 幫你做的
實際執行時 1400 這值會直接出現在指令上 而不是在資料區)
當 a 拿來存取陣列時 1400 這個值就會代入位址運算當中
所以 a[2] 的位址才會是 1400+4*2=1408
是這個樣子的
--
有人喜歡邊玩遊戲邊上逼;
也有人喜歡邊聽歌邊打字。
但是,我有個請求,
選字的時候請專心好嗎?
-- 改編自「古 火田 任三郎」之開場白
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.138
推
09/05 20:09, , 1F
09/05 20:09, 1F
推
09/05 20:16, , 2F
09/05 20:16, 2F
推
09/05 20:56, , 3F
09/05 20:56, 3F
推
09/06 01:27, , 4F
09/06 01:27, 4F
討論串 (同標題文章)