##理解##
在C++中可以声明一个变量的引用,相当于给变量起了一个别名。
具体的语法如下
T & n // T表示引用的类型,n表示引用的名字
引用需要注意的几点
- 定义引用的时候一定要将其初始化成引用某个变量 ,否则编译的时候会报错
- 初始化之后,该引用就会一直引用该变量,不会引用其他的变量了。这个时候如果在进行 = 操作只是把等号右边的值赋值给引用所指向的变量。
int a = 0; int b = 1; int & r = a; r = b; //执行之后,a = 1
- 引用只能引用变量,不能引用常量和表达式
- 声明一个引用并不是定义了一个变量,引用本身也不是一种数据类型,因此操作系统并不会给一个引用分配内存,因此对引用求地址就是对目标变量求地址 所以 &a = &r;
- 引用没有对应的指针类型。但是可以声明一个引用指向指针。
int p = &a;
int& rp = p; // int 为数据类型, int& 表示int 的引用。
cout <<rp<<endl;
##常引用##
使用const修饰的引用叫做常引用,常引用初始化之后就不能再指向别的值。
int b = 55;
const int& rb = b;
rb = 8888; // 编译器报错,不能再修改其值。
cont T & 和 T & 是两种不同的类型
T& 类型的引用 或者T类型的变量可以用来初始化const T & 类型的引用。
const T类型的常量和const T & 类型的引用则不能用来初始化T & 类型的引用,除非进行强制类型转换。
##应用##(待补充)
- 引用作为参数引用的一个重要作用就是作为函数的参数。以前的C语言中函数参数传递是值传递,如果有大块数据作为参数传递的时候,采用的方案往往是指针,因为这样可以避免将整块数据全部压栈,可以提高程序的效率。但是现在(C++中)又增加了一种同样有效率的选择(在某些特殊情况下又是必须的选择),就是引用。