先说结论:“函数形参是实参的一份临时拷贝,改变形参不会对实参进行改变”
本文编译器环境:VS2013
目录
开始介绍
在开始之前,我们先要了解计算机中的寄存器:
我们常见的寄存器有:eap、ebp、ecp、edp等,
而今天重点要关注的是esp(栈顶指针)和ebp(栈底指针)这2个寄存器。
这2个寄存器中存放的是地址,这2个地址是用来维护函数栈帧的。每一个非静态区的函数调用,都要在栈区创建一个空间。
这里用反汇编的方式来对这段简单的代码来做例子:
代码
#include <stdio.h>
int add(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
int main(void)
{
int a = 10;
int b = 20;
int c = 0;
c = add(a, b);
printf("%d", c);
return 0;
}
在VS2013中,main函数是被其他函数调用的:
.....(代码)
main函数被__tmainCRTStartup函数调用,main函数返回值返回到