C++ 函数调用的压栈过程

调用fun()的过程大致如下:

main()========

  1. 参数拷贝(压栈),注意顺序是从右到左,即c-b-a;
  2. 保存d = fun(a, b, c)的下一条指令,即cout<
  3. 跳转到fun()函数,注意,到目前为止,这些都是在main()中进行的;

fun()=====

  1. 移动ebp(某时刻的栈顶指针)、esp(栈顶指针)形成新的栈帧结构;
  2. 压栈(push)形成临时变量并执行相关操作;
  3. return一个值;
  4. 出栈(pop);
  5. 恢复main函数的栈帧结构;
  6. 返回main函数;

main()========

  1. 继续执行main()函数的操作。

你可能感兴趣的:(c/c++,c++,开发语言,算法)