[问题] 关于指标本身的内存位置

楼主: 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