一、问题引入
在C++的中新增一个特性:按引用传递变量,虽然与按传递变量的地址可以实现相同的结果,但引用有其独特的地方。
引用传递: 引用经常被用作函数参数,使得函数中的变量名成为调用程序中的变量的别名。
通过引用变量用作参数,函数将使用原始数据,而不是其副本。
二、解决过程
举例说明:
#include using namespace std;void swapv(int a, int b) // 传变量的值{ int temp = a; a = b; b = temp;}void swapp(int *a, int *b) // 传变量的地址{ int temp = *a; *a = *b; *b= temp;}void swapq(int & a, int & b) // 传引用变量{ int temp = a; a = b; b = temp;}int main(void){ int wallet1 = 120; int wallet2 = 50; cout << "source wallet1:" << wallet1 << endl; cout << "source wallet2:" << wallet2 << endl; cout << endl; swapv(wallet1, wallet2); cout << "传变量的值" << endl; cout << "wallet1:" << wallet1 << endl; cout << "wallet2:" << wallet2 << endl; cout << endl; wallet1 = 120; wallet2 = 50; swapp(&wallet1, &wallet2); cout << "传变量的地址" << endl; cout << "wallet1:" << wallet1 << endl; cout << "wallet2:" << wallet2 << endl; cout << endl; wallet1 = 120; wallet2 = 50; swapq(wallet1, wallet2); cout << "传引用变量" << endl; cout << "wallet1:" << wallet1 << endl; cout << "wallet2:" << wallet2 << endl; cout << endl; return 0;}
? 运行结果
三、反思总结
C++新增的这项特性时对C语言的超越,C语言只能按值传递。
在使用传递变量的地址, 在函数使用的整个过程中, 都需要使用解引用运算符 *
,而 传递引用变量, 则可以使用使用变量。
因为引用参数实际上是基于指针的代码的另一个接口,那么什么时候应使用引用?、什么时候应使用指针?、什么时候应按值传递?
四、参考引用
C++ Primer Plus:中文版 (第六版) 第8章