引用
引用
引用的语法
语法:
数据类型 &别名 = 原名
- 引用的本质是指针常量。
(int& b = a) == (int * const ref = &a) //自动转换为 int* const ref = &a; 指针常量是指针指向不可改,也说明为什么引用不可更改 int& ref = a; ref = 20; //内部发现ref是引用,自动帮我们转换为: *ref = 20;
- 引用必须引用已经存在的变量,其本身不是真正的变量,不占用内存。
注意事项:
- 引用必须初始化。
- 引用初始化后就不可更改,因为指针常量的指向不可更改,如:
int a = 1; int b = 0; int& ref = a; ref = b;
这样操作后ref不会成为b的引用,而是把b的值赋给ref。
为引用赋值,实际上是把值赋给与引用绑定的对象。
引用只能绑定在对象上,不能与字面值或某个表达式的计算结果绑定在一起;除了对常量的引用
const int &r = 100; //合法
引用做函数参数
- 若想影响传入函数的变量,可使用引用如:
void self_Add(int& a) { a++; } int main() { int a = 5; self_Add(a); }
如此操作后a自加1为6。
总结:通过引用参数产生的效果同按地址传递是一样的。引用的语法更清楚简单
引用做函数返回值
局部变量引用不能做返回值
函数调用作为左值:
int& test02() { static int a = 20; return a; } int main() { test02() = 1000; //相当于把100赋给a }