本文简要说明C语言中函数调用模型,调用过程中在堆栈中的出栈、进栈顺序,示例代码如下:
#include <stdio.h>
#include <stdlib.h>
void f2(int b)
{
printf("我也是醉了\n");
}
void f1(int a)
{
printf("好像有人说:");
f2(3); //调用f2
}
int main()
{
f1(1);
system("pause");
return 0;
}
运行结果:
好像有人说:我也是醉了
请按任意键继续...
进栈过程:
1、操作系统运行状态
2、main函数返回地址
3、main函数的参数(若有)
4、main函数的运行状态
5、调用函数f1,f1的返回地址进栈
6、f1的参数进栈
7、f1运行状态进栈
8、调用函数f2,f2的返回地址进栈
9、f2的参数进栈
调用完毕后,出栈依次逆向9、8、7、6、5、4、3、2、1顺序结束。
参考:传智播客扫地僧老师