05-函数传值VS传引用
函数传值
一、没法改变值的方式:
一个变量拷贝到另一个变量, 这种形式的函数调用被称为: 传值调用
局部变量的生命周期在函数的运行期间会一直存在.
void Increment(int a)//假设一个 x(只是为了验证实参会被映射到形参这件事情),a的值会被拷贝到x
{
a = a + 1; //1. x = x + 1 值为11 //a映射到x, a的值拷贝到x
//2.执行完毕后Increment()函数在内存上的栈针空间被清除,继续执行main函数中的printf语句
printf("Address of variable a in increment = %d\n", &a);
}
int main(int argc, const char* argv[])
{
int a;
a = 10;
Increment(a);
printf("Address of variable a in main = %d\n", &a);
printf("a = %d", a);
}
二、可以改变值的方式(传引用):
传变量的地址--> 解引用并且做一些操作 就叫做传引用(用指针传值的方式)
传引用的好处: 可以节省内存空间
void Increment(int *p)
{
*p=(*p)+1;
}
int main(int argc, const char* argv[])
{
int a;
a = 10;
Increment(&a);
printf("a = %d", a);
}
程序一开始执行之后调用到内存,中的执行步骤: 堆和栈的概念: