C++中的引用和指针相似,不过比指针更安全。它相当于变量的别名。
指针和引用的区别:
1、指针可以不初始化,但是引用在定义的时候必须初始化。
例如: int *p; //正确
int& p //错误 应该是 int a int&b=a //正确
2、指针可以指向不同的变量,而引用引用了一个变量之后就不能再引用其他变量
int a;
int b;
int* p=&a;
int &q=a;
p=&b; //把b的地址赋给p
q=b; //把b的值赋给a
3、可以定义指向指针的指针(即二级指针),但是不能定义引用引用的引用
int a;
int* p;
int** q=&p; //正确
int& r=a; //正确
int&& rr = r //错误
4、可以定义指针数组,但是不可以定义引用数组
数组的引用:int arr[5];
int (&array) [5] = arr;
5、可以定义引用指针的引用,但是不可以定义指向引用的指针
int* p;
int*& r=p; //正确
int&* p=r //错误
注意: 不能返回局部变量的指针和引用
引用的好处:
调用函数的时候,如果传递引用的话,避免了对实参的赋值开销。