(资料图)

C++ 引用

引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。

C++ 引用 vs 指针

引用很容易与指针混淆,它们之间有三个主要的不同:

C++ 中创建引用

试想变量名称是变量附属在内存位置中的标签,您可以把引用当成是变量附属在内存位置中的第二个标签。因此,您可以通过原始变量名称或引用来访问变量的内容。实例

#include  using namespace std; int main (){   // 声明简单的变量   int    i;   double d;    // 声明引用变量   int&    r = i;   double& s = d;      i = 5;   cout << "Value of i : " << i << endl;   cout << "Value of i reference : " << r  << endl;    d = 11.7;   cout << "Value of d : " << d << endl;   cout << "Value of d reference : " << s  << endl;      return 0;}

当上面的代码被编译和执行时,它会产生下列结果:

Value of i : 5Value of i reference : 5Value of d : 11.7Value of d reference : 11.7

C++ 把引用作为参数

实例

#include using namespace std; // 函数声明void swap(int& x, int& y); int main (){   // 局部变量声明   int a = 100;   int b = 200;    cout << "交换前,a 的值:" << a << endl;   cout << "交换前,b 的值:" << b << endl;    /* 调用函数来交换值 */   swap(a, b);    cout << "交换后,a 的值:" << a << endl;   cout << "交换后,b 的值:" << b << endl;    return 0;} // 函数定义void swap(int& x, int& y){   int temp;   temp = x; /* 保存地址 x 的值 */   x = y;    /* 把 y 赋值给 x */   y = temp; /* 把 x 赋值给 y  */     return;}

当上面的代码被编译和执行时,它会产生下列结果:

交换前,a 的值: 100交换前,b 的值: 200交换后,a 的值: 200交换后,b 的值: 100

C++ 把引用作为返回值

实例

#include  using namespace std; double vals[] = {10.1, 12.6, 33.1, 24.1, 50.0}; double& setValues(int i) {     double& ref = vals[i];       return ref;   // 返回第 i 个元素的引用,ref 是一个引用变量,ref 引用 vals[i]  } // 要调用上面定义函数的主函数int main (){    cout << "改变前的值" << endl;   for ( int i = 0; i < 5; i++ )   {       cout << "vals[" << i << "] = ";       cout << vals[i] << endl;   }    setValues(1) = 20.23; // 改变第 2 个元素   setValues(3) = 70.8;  // 改变第 4 个元素    cout << "改变后的值" << endl;   for ( int i = 0; i < 5; i++ )   {       cout << "vals[" << i << "] = ";       cout << vals[i] << endl;   }   return 0;}

当上面的代码被编译和执行时,它会产生下列结果:

改变前的值vals[0] = 10.1vals[1] = 12.6vals[2] = 33.1vals[3] = 24.1vals[4] = 50改变后的值vals[0] = 10.1vals[1] = 20.23vals[2] = 33.1vals[3] = 70.8vals[4] = 50

推荐内容