当我们要解释这个问题时,我们首先回顾一下函数的调用是如何实现的;
有如下的代码:
int Add(int &a, int &b)
{
int p = 2 * a;
int q = 4 * b;
return p + q;
}
int main()
{
int m = 10;
int n = 20;
int x = Add(m, n);
int y = 3 * x;
return 0;
}
上图对应上面的代码:当程序执行到point a时,系统先保存当前的上下文——也就是把上面定义的m和n保存下来,然后进入Add函数,这时需要定义两个变量p和q,当Add 函数执行完时p、q的空间被释放;程序返回到point a继续执行;在point b获取到x的值为30;进一步求得y 的值;最后释放y、x、n和m;函数运行结束。
我想你已经注意到了上面p和q是“后定义、先释放”的;对于这样的处理我们能选择的数据结构自然就是“栈”了。