引用是C++对C语言的一个补充,引用是隐式的指针,是C++常用的重要内容之一。
1 引用初始化
引用就是给一个变量起一个别名,用“&”标识符来标识,其格式如下所示。
数据类型 & 引用名 = 变量名;
如
int a = 10;
int &b = a;//b是a的别名
b就是变量a的引用,b和a标识的是同一块内存,相当于一个人有两个名字。对a与b进行操作,都会更改内存中的数据。
注意
● 引用在定义时必须初始化,如int &b;语句是错误的。
● 引用在初始化时只能绑定左值,不能绑定常量值,如int &b = 10;语句是错误的。
● 引用一旦初始化,其值就不能再更改,即不能再做别的变量的引用。
引用类似于 Windows 中的快捷方式,一个可执行程序可以有多个快捷方式,通过这些快捷方式和可执行程序本身都能够运行程序;引用还类似于人的绰号(笔名),使用绰号(笔名)和本名都能表示一个人。
2.实例:引用的定义
#include <iostream>
using namespace std;
int main() {
int a = 99;
int &r = a;
cout << a << ", " << r << endl;
cout << &a << ", " << &r << endl;
return 0;
}
输出结果:
99, 99
0x28ff44, 0x28ff44
本例中,变量 r 就是变量 a 的引用,它们用来指代同一份数据;也可以说变量 r 是变量 a 的另一个名字。从输出结果可以看出,a 和 r 的地址一样,都是0x28ff44;或者说地址为0x28ff44的内存有两个名字,a 和 r,想要访问该内存上的数据时,使用哪个名字都行。
注意,引用在定义时需要添加&,在使用时不能添加&,使用时添加&表示取地址。如上面代码所示,第 6 行中的&表示引用,第 8 行中的&表示取地址。除了这两种用法,&还可以表示位运算中的与运算。
3实例:通过引用修改原始变量中所存储的数据
#include <iostream>
using namespace std;
int main() {
int a = 99;
int &r = a;
r = 47;
cout << a << ", " << r << endl;
return 0;
}
运行结果:
47, 47
最终程序输出两个 47,可见原始变量 a 的值已经被引用变量 r 所修改。