void up_and_down(int);
int main(void)
{
up_and_down(1);
return 0;
}
void up_and_down(int n)
{
printf(“level %d: n loacation %p\n”, n, &n);/
1
/
if (n < 4)
up_and_down(n + 1);
printf(“level %d: n loacation %p\n”, n, &n);/
2
/
}
将输出 1 2 3 4 4 3 2 1;
画图
由此可见,当调用函数时,将主程序代码行的下一条指令的地址保存到栈中;当函数返回时,程序就会从栈中获取该地址,并从那一点继续向下执行。在函数调用了其它函数的情况下,将每一个返回地址都放到栈中;当函数结束时,就可以找到它们在栈中的地址。
版权声明:本文为m0_46615101原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。