1、引用----------变量的别名
引用和对应的变量具有相同的地址。引用在定义的时候必须用变量初始化,但是作为函数参数时,不用初始化。
2、const引用-------让变量拥有只读属性
int a = 3;
const int &b = a;
int &b = 1; //error
const int &b = 1; 正确,编译器为1 分配空间,b是它的别名,只读变量
3、引用在C++中的内部实现是一个常指针
int & a <------> int *const a;
引用有自己的存储空间,在32位计算机上时4个字节,与指针相同。
void f(int &a) void f(int *const a)
{ {
a = 5; <-------> *a = 5;
} }
4、当函数返回值为引用时
若返回栈变量, 不能成为其他引用的初始值,不能作为左值使用。
若返回静态变量或全局变量,可以成为其他引用的初始值, 即可以为左值,也可以为右值。
5、三目运算符
int a = 1, b = 2;
( a > b ? a : b) = 3;
在C语言中是错去的,三目运算符返回的是值, 在C++中可以作为左值,返回的是变量的引用, 但是当返回值中有一个是常量值时, 则返回的是值,不可以作为左值。