#include <stdio.h>
#include <stdlib.h>
int f(int i,int j,int k);
int main()
{
static int i=0;
f(i++,i++,i++);
system("pause");
return 0;
}
int f(int i,int j,int k)
{
int l;
int g;
printf("k=%d:[%x]\n ",k,&k);
printf("j=%d:[%x]\n",j,&j);
printf("i=%d:[%x]\n",i,&i);
printf("\n");
printf("l:%x\n",&l);
printf("g:%x\n",&g);
}
输出结果:
说明:(在栈中,由地址大的位置向着地址小的位置分配)
(1)main在调用函数的时候,函数f中的参数是先压l后压g(从左往右),而函数f的形参则是 从右往左 压栈的。
(2)压栈顺序和参数计算顺序不是一回事。所以看参数值并不能确定函数参数的压栈顺序,从地址顺序观察更准确。
评论