变量的引用,简单来说就是给该变量取外号。
先看看咋引用吧
例1
int val(10);
int& refv = val;
cout << "val=" << val << ',' << "refv=" << refv << endl;
val += 10;
cout << "val=" << val << ',' << "refv=" << refv << endl;
refv += 10;
cout << "val=" << val << ',' << "refv=" << refv << endl;
输出结果
val=10,refv=10
val=20,refv=20
val=30,refv=30
例2
int i = 6, & ri = i, * pi = &ri;
cout << "原值:" << endl;
cout << "目标实体=" << i << endl;
cout << " 引用=" << ri << endl;
cout << " 指针=" << *pi << endl;
cout << endl;
ri = 9;
cout << "新值:" << endl;
cout << "目标实体=" << i << endl;
cout << " 引用=" << ri << endl;
cout << " 指针=" << *pi << endl;
输出结果
原值:
目标实体=6
引用=6
指针=6
新值:
目标实体=9
引用=9
指针=9
数组的引用
一维数组的引用
举例:
数组元素的引用以及数组的引用
int a[10] = { 0,1,2,3,4,5,6,7,8,9 };
int& r1 = a[6];
int& r2 = a[9];
int(&r3)[10] = a;
cout << r1 << endl; //输出:6
cout << r2 << endl; //输出:9
cout << r3[3] << endl; //输出:3
cout << r3[0] << endl; //输出:0
int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
int& r1 = arr[3];
int& r2 = arr[6];
int(&r3)[10] = arr;
cout << r3 << ':' << r3[0] << endl;
cout << &r1 << ':' << r3[3] << endl;
cout << &r2 << ':' << r3[6] << endl;
cout << &r2 << ':' << r3[9] << endl;
return 0;
二维数组的引用
与一维数组一样,后面多一个下标
举例:
int a[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };
int& r1 = a[0][1];
int& r2 = a[1][2];
int(&r3)[3][4] = a;
cout << r1 << endl; //输出:1
cout << r2 << endl; //输出:6
cout << r3[1][3] << endl; //输出:7
cout << r3[2][3] << endl; //输出:11
int arr[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };
int& r1 = arr[1][1];
int& r2 = arr[2][2];
int(&r3)[3][4] = arr;
cout << arr[0][0] << '\t' << r3[0][0] << endl;
cout << arr[1][1] << '\t' << r1 << endl;
cout << arr[2][2] << '\t' << r2 << endl;
cout << arr[2][3] << '\t' << r3[2][3] << endl;
输出结果
0 0
5 5
10 10
11 11
指针的引用
int jiu = 999, * pjiu = &jiu;
int*& rjiu = pjiu;
cout << jiu << endl;
cout << *pjiu << endl;
cout << *rjiu << endl;
输出结果
999
999
999
int i = 3, * pi = &i;
int& ri = *pi;
int*& ri2 = pi;
cout << &ri << ":" << ri << endl;
cout << ri2 << ":" << *ri2 << endl;
引用的引用
外号也能有外号
int num = 5;
int& r1 = num; //r1代表num
int& r2 = r1; //r2也代表num
r2 *= r1;
cout << num << endl; //输出:25
cout << r1 << endl; //输出:25
cout << r2 << endl; //输出:25
常引用
const后的引用
int i = 6;
int const& ri = i;
ri += 1; //错
i += 1;
注:当常引用时,不能将引用名进行值的改变,只有通过改变与其绑定的变量改变其值