c++中常引用const int &a的介绍
引用
1 | int x; // 定义变量x |
声明后,使用x或y代表同一变量。在上述声明中,&是“引用声明符”长相与取地址符相同
- 对引用而言,新定义的引用变量是不申请内存单元的,与它引用的对象共同同一块变量存储单元,正是因为这一特性,在声明一个引用的同时必须将其初始化
1 | int &c=a;//正确 |
在函数中声明一个变量的引用后,在函数执行期间,该引用一直与其代表的变量相联系,不能再作为其他变量的别名。例如:
1
2
3int a, b; // 定义整型变量a,b
int &c = a; // 使c成为变量a的引用
int &c = b; // 又使c成为变量b的引用是错误的在c++中加入引用的主要目的是为了给函数传参。在C语言中,将变量名作为实参。这时将变量的值传递给形参。传递是单向的,在调用函数时,形参和实参不是同一个存储单元。在执行函数期间形参值发生变化并不传回给实参。
而引用与他所引用的对象共用同一块内存空间,在函数中直接改变引用的值,原变量的值也会随之改
###常引用###常引用就是在引用之前加上const对引用进行限制,使得该引用在函数中不能进行改变(但可以改变原变量的值),例如
1
2
3
4int a = 6; // 定义整型变量a,初值为6
const int &b = a; // 声明常引用,不允许改变b的值
b = 8; // 改变常引用b的值,错误
a = 8; // 改变a的值,正确常引用通常用作函数形参,这样能保证形参的不被改变
关于常引用的声明
在声明时,可以用常量或者是表达式常引用进行声明
1
2
3int a = 6; // 定义变量
const int &b = a + 3; // 正确,可以用表达式对常引用进行初始化
int &c = a + 3; // 错误,对非常引用只能用变量进行初始化在以表达式的形式对常引用进行声明时,系统将自动生成一个临时变量,用这个临时变量存表达的值,之后常引用实是这个临时变量的引用。
例如将const int &b=a+7;自动转化为1
2int temp=a+7;//临时变量temp
const int &b=temp;