首页 新闻 搜索 专区 学院

关于函数调用中堆栈中临时变量存储问题

0
悬赏园豆:30 [已关闭问题] 关闭于 2016-05-13 16:29
param2, int param3)
{
    int val1 = param1;
    int val2 = param2;
    int val3 = param3;
    printf("&param1:0x%08x\n", &param1);
    printf("&param2:0x%08x\n", &param2);
    printf("&param3:0x%08x\n", &param3);
    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。

按照《程序员面试宝典》中所讲的,其堆栈分布应如下图所示:

为了弄明白怎么回事,我看了程序编译的汇编语言,可是由于才疏学浅还是没有搞懂!现在请教一下,请知道的同志给以解答,谢谢!

RunningSnail的主页 RunningSnail | 初学一级 | 园豆:193
提问于:2016-05-13 16:28
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册