2 引用
2.1 引用的基本使用
作用:给变量起别名
语法:数据类型 &别名 = 原名
int a = 10; int &b = a; b = 100; cout <<"a = " << a<< endl; cout <<"b = " << b<< endl;
2.2 引用注意事项
引用必须初始化,且不能更改
int a = 10; int b = 5; int &c = a; c = b;//这里不是修改引用,而是赋值,也就是让a的值变为5。
2.3 引用做函数参数
函数传参时,可以传入引用。 简化指针,修改实参。
void swap(int &a, int &b) { int t = a; a = b; b = t; } ... a = 1; b = 2; swap(a,b);
2.4 引用做函数的返回值
不要返回局部变量引用。(局部变量在栈里,会被编译器回收) 函数的调用可以作为左值:
int & test0() { static a = 10; return a; } ... int &ref = test0(); test0() = 1000;
2.5 引用的本质
引用的本质是一个指针常量。 这也解释了引用为什么不能更改。
int a = 10; int &ref = a;//相当于 int* const ref = &a;
2.6 常量引用
修饰形参,防止误修改。
void showValue(const int &a) { cout<<"a="<< a << endl; }
int & ref = 10 //错误,引用需要一个合法内存空间 const int & ref = 10; //正确,编译器会优化为: //int temp = 10; const int & ref = temp;