Skip to content

Latest commit

 

History

History
46 lines (37 loc) · 1.55 KB

关于引用.md

File metadata and controls

46 lines (37 loc) · 1.55 KB

这里会写一点关于引用的相关知识,如右值引用等,以及一些关于引用的使用案例和场景,讨论引用和指针间的关系。


菜鸟教程上的引用词条


引用可以直接粗暴的理解为别名,通过起别名的方式,可以方便很多场景下的参数传递,替代一部分指针的作用,毕竟指针如果不熟练的话还是会出现很多问题的。 下面可以看一段代码。(来自菜鸟教程)

#include <iostream>
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和b两个数传进了swap,由于swap的参数列表用的是引用的形式,所以我们相当于给a取了个别名叫x,给b取了个别名为y,在函数的内部,调用了x和y的别名,实现了两个数的交换。
在这里我们成功的实现了本来是使用指针来实现的内容。
所谓右值引用,就是绑定在右值上的引用,如 int &&a = 20