引用(reference)的定义:
int a;
int &b = a;
首先,C++中的引用即是给变量起别名。变量在编译的时候用内存地址替换,相同的变量名用相同的地址替换,变量名只是给这个内存地址单元起了一个我们方便编程的一个名字。那么引用的定义便是给这个内存空间在原有的名字基础上,再次起了一个别名,而不是重新分配内存空间。编译器在编译的时候,这两个不同的名字就用相同的地址替换。那么上边的定义中,变量a,b便是同一个地址单元的不同的两个名字。
1、引用是一种关系型声明,声明的时候必须初始化,一经声明,不可变更。
2、可对引用再次引用,多次引用的结果是某一变量具有多个别名。
C++中的引用,让很多需要上级指针才能完成的事情变成可在平级内进行。例如:
在C语言中想要实现两个数据的交换(int a,int b)
函数 void swap(int m,int n) 无法实现。需要用到指针 void swap(int* p,int* q)
函数调用时需要写成 swap(&a,&b);
在C++中,引用作为函数的参数
函数 void swap(int& m ,int& n)
函数调用时直接写成swap(a,b);
我的理解为,在函数调用的时候,给变量a起了别名m,b起了别名n,所对应的内存空间一致,那么对于m,n的操作,a,b的值也会改变,实现交换。
定义指针的引用
int* p = &a; int*& q = p; //但不能对引用再次引用,也不能定义引用的指针
定义数组的引用
int arr[3] = {1,2,3}; int(&arrr)[3] = arr; //但不能定义引用数组