0x00 引用的语法
- 引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
引用的声明方法:类型标识符 &引用名=目标变量名;
与指针不同,引用的对象不能被改变,且必须在声明时即被初始化。
如下:定义引用ra,它是变量a的引用,即别名。
int a;
int& ra = a;
- 引用与另外声明一个变量的区别在于,引用没有另外开辟存储空间:
int num = 2;
int* pointer = #
int& quote = num;
int num2 = num;
cout << &num << endl << pointer << endl << "e << endl << &num2 << endl;
输出结果如下:
0x01 将引用作为函数参数
将引用作为函数参数类似指针传参,可以改变参数的实际值:
int re(int& t, int& arc)
{
int temp;
temp = t;
t = arc;
arc = temp;
return 0;
}
int add1 = 100;
int add2 = 200;
re(add1, add2);
cout << add1 << endl << add2 << endl;
输出结果如下:
0x02 返回值为引用类型的函数
- 返回值为引用类型的函数的一个特点是可以作为表达式的左值:
int test2 = 1;
int& re(int& t, int arc)
{
t = arc + 1;
return t;
}
re(test2, 1) = 3;
cout << re(test2, 1) << endl<< test2 <<endl;
输出结果如下:
- 可以注意到,由于test2作为re()函数的返回值,在调用re()函数作为表达式左值的那一行之后,无论函数内计算结果如何(本例中为2),它的值仍会被赋值改变了(本例中为3)。这是因为返回值为引用类型的函数所返回的是一个隐式指针。