一、问题引入

在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章