众所周知,函数的调用分为传值调用和传址调用,那他们的区别是什么呢?
传值调用:
函数的形参和实参分别占有不同的内存块,对形参的修改不会影响实参。
传址调用:
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方法。
这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数的内部可以直接操作函数外部的变量。
用文字解释未免太过于苍白,接下来我们用实例来证明:
我们用之前写过的交换俩个变量的值作为例子。(这次我们用调用函数的方法来写)
#include<stdio.h>
#include<windows.h>
swap(int x, int y)
{
int tmp;
tmp = x;
x = y;
y = tmp;
}
int main()
{
int a = 20;
int b = 30;
printf("before :a: %d b: %d \n", a, b);
swap(a, b);
printf("after :a: %d b: %d \n", a, b);
system("pause");
return 0;
}
如果不出意外的话,我们的a和b的值已经交换了,那我们让程序run起来,看一看结果
嗯???a和b的值并没有交换呀!
上面的程序中,a和b是实