</pre><pre name="code" class="cpp">#include <stdio.h>
int fun2(int x, int y, int z)
{
int i = x + y;
int j = y + z;
int k = i + j;
return k;
}
int fun1(int a, int b)
{
int c = a + b;
int d = 0;
d = fun2(a, b, c);
return d;
}
int main()
{
int num1 = 10;
int num2 = 20;
fun1(num1, num2);
return 0;
}
以上边代码为例,main函数调用了fun1函数, 而fun1函数又调用了fun2函数。在调用过程中栈空间的变化如下
ESP 是栈指针寄存器这个寄存器中存储着栈顶的地址。 EBP中存储着栈底的地址。 函数栈空间主要是由这两个寄存器来确定
main函数调用fun1函数时,第1 步操作就是把传入的参数压入到栈中。 c语言使用的是_cdecl调用方式,参数从右向左依次压入栈中
所以实参num2的数值被复制到了形参b所在的内存中