Re: [問題] 指標常數的問題

看板C_and_CPP作者 (-858993460)時間15年前 (2010/09/05 19:45), 編輯推噓4(400)
留言4則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《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
推這篇 =w=
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
文章代碼(AID): #1CWuBKf5 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1CWuBKf5 (C_and_CPP)