C语言中的函数参数传递方式有两种:值传递和指针传递,C++中新增了一种函数参数传递的方式:引用传递。参数传递这个问题看似简单,如果不深入了解其中的原理,往往会变成为我们代码中经常出现而又容易忽视的错误。下面我就以我们非常熟悉的一个交换函数为例来详细说一下各种参数传递方式的联系与区别。
1.传值
//以传值方式进行参数传递
void swap(int a,int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main(void)
{
int m = 10;
int n = 20;
swap(m, n);
printf("m=%d\n", m);
printf("n=%d\n", n);
return 0;
}
代码的执行过程如下:
1.程序进入到主函数中,看到两个声明以及初始化语句
int m = 10;
int n = 20;
会先给m和n这两个变量在内存分配两个空闲的空间(2*sizeof( int )个字节,不一定连续存储),如下图所示:
2.程序执行到语句:
swap(m, n);
便会调用函数swap(int a, int b),这时又会为变量a和变