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

作者: EngRookie (EngRookie)   2016-06-17 13:44:06
大家午安
前幾天有朋友問我一個問題,我也不太懂所以上來問一下各位
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 呢 ?
謝謝各位
作者: bibo9901 (function(){})()   2016-06-17 14:00:00
compiler決定的. 印象中沒規定要按宣告順序/連續排列
作者: uranusjr (←這人是超級笨蛋)   2016-06-17 14:02:00
*k 就是 j 的值亦即 i 在記憶體中的位置, 至於為什麼是k + 12 就是平台想這麼做而已, 沒為什麼
作者: EngRookie (EngRookie)   2016-06-17 15:10:00
謝謝
作者: stupid0319 (徵女友)   2016-06-17 20:56:00
結果為 k ,的這行好像怪怪的................
作者: haosan (K211)   2016-06-17 21:41:00
j的記憶體位置, i的記憶體位置, i的值k的記憶體位置是printf("%x", &k)

Links booklink

Contact Us: admin [ a t ] ucptt.com