我们只是知道函数调用的过程是先传递参数,然后是函数体,然后是返回值的顺序,但是这个过程怎么实现的,以及参数的入栈顺序等等,这里我大致的也是实验的态度做个验证,验证这句话也是为了加深自己对函数的调用,以及参数的传递的一个深刻的解释
1:验证的题目
1、函数的调用过程的顺序(可能不这么个说法),验证函数是参数先传递个给函数主体,然后是函数体,最后是返回值
2、参数的传递是从右到左压入栈的
3、_fastcall调用协定函数参数的入栈顺序是冲左到右
2:开始验证
为了验证上面的正确性,我写了一小段代码
#include<iostream>
using namespace std;
int fun(int a,int b);
int main()
{
int m,n;
m=2,n=5;
int fum;
fum=fun(m,n); //断点1
cout<<fum; //断点3
return 0;
}
int fun(int a,int b)
{
int sum;
sum=a+b;
return sum; //断点2
}
验证的思路:
记录在断点1,断点2,断点3,四个位置的fun函数,m,n变量,参数a,参数b,sum,fum的地址以及他们的值,然后做个比较,发现其规律