C++——引用

C++函数中参数的传递方式是传值。在函数域中为参数重新分配内存,而把实参的数值传递到新分配的内存中。它的优点是有效避免函数的副作用(即函数修改了原始数值a,b)。

 1 #include<iostream>
 2 void fun(int x, int y)
 3 {
 4     x = 10;
 5     y = 20;
 6 }
 7 
 8 int main(int argc, char **argv)
 9 {
10     int a, b;
11     a = 100;
12     b = 200;
13     fun(a, b);
14     getchar();
15     return 0;
16 }
View Code

形参x,y重新开辟了内存。

如果要求改变实参的值、怎么办呢?

C的做法,值传递不能交换2个参数值,就有指针传递

 1 #include<iostream>
 2 
 3 void swap(int *x, int *y)
 4 {
 5     int tmp = *x;
 6     *x = *y;
 7     *y = tmp;
 8 }
 9 int main(int argc, char **argv)
10 {
11     int a, b;
12     a = 100;
13     b = 200;
14     swap(&a,&b);
15     getchar();
16     return 0;
17 }
View Code

但是这种做法,对于swap里面参数来说,还是需要开辟指针变量占用的空间

如果实参是一个复杂的对象,重新分配内存会引起程序执行效率大大下降,怎么办呢?在C++中有一种新的导出型数据类型—引用(reference)可以解决上面的难题。引用又称别名(alias)。

 1 #include<iostream>
 2 
 3 void swap(int &x, int &y)
 4 {
 5     int tmp = x;
 6     x = y;
 7     y = tmp;
 8 }
 9 int main(int argc, char **argv)
10 {
11     int a, b;
12     a = 100;
13     b = 200;
14     swap(a,b);
15     getchar();
16     return 0;
17 }
View Code

猜你喜欢

转载自www.cnblogs.com/kelamoyujuzhen/p/9427555.html