变量的引用:
引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
引用的声明方法:类型标识符 &引用名=目标变量名;
例:char a;
char &ra=a;
1)引用仅是变量的别名,而不是实实在在地定义了一个变量,因此引用本身并不占用内存,而是和目标变量共同指向目标变量的内存地址.
2)表达式中的取地址符&不再是取变量的地址,而是用来表示该变量是引用类型的变量。
3)其他用法,如下:
#include <iostream>
using namespace std;
void fun(int &x)
{
cout << "形参的value:" << x << endl;
cout << "形参的地址:" << &x << endl;
x+=10;
}
// 引用 Reference
// 引用一旦产生就与实体存在必然联系,指直到灭亡
int main()
{
// 注1:引用必须初始化,因为它总依附于某个实体,且地址相同。
int a=2;
int b=12;
int &Ra=a;
cout << "init a=2, then ra:"<< Ra << endl;
cout << "a的地址:" << &a << " Ra的地址:" << &Ra << endl;
// 注2:修改引用的值,即修改附属实体的值
Ra=3;
cout << "change ra=3, then a:" << a <<endl;
// 注3:引用多用在函数参数的传递上
fun(a);
cout << "transferred a:" << a <<endl;
// 注4:常引用声明方式:const 类型标识符 &引用名 = 目标变量名;
// 用这种方式声明的引用,不能通过引用对目标变量的值进行修改,从而使引用的目标成为const,达到了引用的安全性。
const int &Rb=b;
cout << "init b=12, then Rb:" << Rb <<endl;
// Rb=13; // 报错,error: assignment of read-only reference ‘Rb’|
// cout << "init Rb=13, then Rb:" << Rb << " b:" << b <<endl;
return 0;
}
运行结果:
参考: