[問題] 關於指標本身的記憶體位置

看板C_and_CPP作者 (EngRookie)時間8年前 (2016/06/17 13:44), 8年前編輯推噓1(106)
留言7則, 5人參與, 最新討論串1/1
大家午安 前幾天有朋友問我一個問題,我也不太懂所以上來問一下各位 C語言 int i = 3; int *j; int **k; j = &i; k = &j; printf("%x, %x, %u\n", k, *k, **k); 結果為 j的記憶體位置, j的記憶體位置 +12 bytes, i的值 我不太懂為什麼是 +12 呢 ? 謝謝各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.91.121 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1466142248.A.726.html ※ 編輯: EngRookie (118.163.91.121), 06/17/2016 13:47:20

06/17 14:00, , 1F
compiler決定的. 印象中沒規定要按宣告順序/連續排列
06/17 14:00, 1F

06/17 14:02, , 2F
*k 就是 j 的值亦即 i 在記憶體中的位置, 至於為什麼是
06/17 14:02, 2F

06/17 14:03, , 3F
k + 12 就是平台想這麼做而已, 沒為什麼
06/17 14:03, 3F

06/17 15:10, , 4F
謝謝
06/17 15:10, 4F

06/17 20:56, , 5F
結果為 k ,的這行好像怪怪的................
06/17 20:56, 5F

06/17 21:41, , 6F
j的記憶體位置, i的記憶體位置, i的值
06/17 21:41, 6F

06/17 21:42, , 7F
k的記憶體位置是printf("%x", &k)
06/17 21:42, 7F
※ 編輯: EngRookie (122.147.26.70), 06/19/2016 01:46:49 ※ 編輯: EngRookie (122.147.26.70), 06/19/2016 01:47:20
文章代碼(AID): #1NOuueSc (C_and_CPP)