param2, int param3) { int val1 = param1; int val2 = param2; int val3 = param3; printf("¶m1:0x%08x\n", ¶m1); printf("¶m2:0x%08x\n", ¶m2); printf("¶m3:0x%08x\n", ¶m3); printf("&val1:0x%08x\n", &val1); printf("&val2:0x%08x\n", &val2); printf("&val3:0x%08x\n", &val3); } void main() { func(1, 2, 3); }
上述代码的运行结果如下:
结果如图所示,在栈的存储param1~param2的地址都是连续的,但是对于val1~val3为什么都相差12。
按照《程序员面试宝典》中所讲的,其堆栈分布应如下图所示:
为了弄明白怎么回事,我看了程序编译的汇编语言,可是由于才疏学浅还是没有搞懂!现在请教一下,请知道的同志给以解答,谢谢!