函数中的变量为什么要放在“栈”中?

当我们要解释这个问题时,我们首先回顾一下函数的调用是如何实现的;
有如下的代码:

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是“后定义、先释放”的;对于这样的处理我们能选择的数据结构自然就是“栈”了。

Guess you like

Origin blog.csdn.net/m0_37546257/article/details/121619964