1、引用变量
“引用”的格式: 类型名 & 引用名 = 某变量名
int i;
int & r = i;
引用过后,r与i就是一样的了,改变r的值就相当于改变i的值。
引用一个变量,就相当于是给这个变量设置一个别名,可以通过这个别名来修改变量的值。
引用是从一而终的,且只能引用变量,不能引用常量和表达式。
2、将函数的返回值设置为引用
格式:返回类型 & 函数()
#include <iostream>
using namespace std;
int n;
int & set_val(void) //返回的是一个变量
{
return n;
}
int main(int argc, char **argv)
{
set_val() = 40;
cout << n << endl;
return 0;
}
将函数的返回值设为引用,相当于返回的是一个变量,但是这个变量不能设置在函数内部,不能是局部变量,不然在返回时就销毁了。
3、常引用
格式:const 类型名 & 引用名 = 变量
int n;
const int & r = n;
n = 300; //正确用法,n变量的值可以更改
r = 200; //程序报错,r的值不可以更改,因此这个引用是常引用
4、设置函数参数为引用或常引用
格式:函数体 (类型名 & 引用名)
函数体 (const 类型名 & 引用名)
设置函数参数为引用,就可以不通过指针而直接在函数中修改main函数中的变量值。
#include <iostream>
using namespace std;
void set_val(int & n)
{
n = 10;
}
int main(int argc, char **argv)
{
int n = 0;
cout << n << endl; //输出0
set_val(n);
cout << n << endl; //输出10
return 0;
}
而在有时候我们在传入参数的之后不想破坏原来参数的值,就可以在参数引用的时候加上const关键字。这样,在函数里如果有改变引用变量的值的操作就会报错,由此可以保护数据。
void set_val(const int & n)
{
n = 10; //报错,不能改变n的值
}
int main(int argc, char **argv)
{
int n = 0;
cout << n << endl; //输出0
set_val(n);
cout << n << endl; //输出10
return 0;
}