调用栈 · 后进先出
每次函数调用压入一个栈帧(参数 + 局部变量);返回时弹出,局部变量随帧销毁
程序代码(高亮 = 正在执行)
int main() {
int r = max(2, 3);
cout << r;
}
int max(int a, int b) {
int m = fact(a);
return m;
}
int fact(int n) {
... return s;
}
压栈 / 弹栈
调用栈(栈顶在上)
栈顶 top(新帧压这里)
↓ 栈底 bottom
压栈方向(向上增长)
← 活动
← 活动
← 活动
fact( )
形参: n = 2
局部: s = 2 → return 2
max( )
形参: a = 2 b = 3
局部: int m
main( )
局部: int r
最先压入 · 最后弹出(栈底)
▶ 重播