引用的简单使用
作用:给变量起别名.
语法:
数据类型 & 别名 = 原名;
1.先定义一个变量:
int a=10;//创建变量a并进行赋值;
2.给变量起一个别名然后进行赋值:
int &b = a;//创建别名b并用a对b进行赋值。(b就是a的别名)
然后就可以通过别名对变量a进行输出了:
cout <<"通过别名输出变量: "<< b<<endl;
我们就这样成功学会了引用的简单使用了。
当然我们还有很多东西需要注意!!!
注意->1:
引用必须初始化!
注意->1:
引用在初始化后不可以改变!
注意->3
别名与变量必须是同种类型!
引用做函数参数
我们在了解引用做函数参数前我们可以先复习一下<值传递>,<地址传递>
<值传递>
void swap(int a, int b)
{
int t = a;
a = b;
b = a;
}
特点:值没有改变(形参不改变实参)
<地址传递>
void swap(int* a, int* b)
{
int t = *a;
*a = *b;
*b = *a;
}
特点:值发生改变(实质是地址交换)
重点来了—————>
<引用传递>
void swap(int& a, int& b)
{
int t = a;
a = b;
b = a;
}
特点:值发生改变。
好像引用传递和值传递差不多
引用作函数返回值
Pay attention to1:
不能返回局部变量的引用
先上代码
int & test()//将a作为引用返回
{
int a = 10;
return a;
}
返回值第一次结果正确,第二次结果错误。(在调用函数之后编译器会保存数据一次,然后内存被释放就会乱码)
难道真的没有办法了吗?
我们再试试
int & test()//将a作为引用返回
{
static int a = 10;//使用"static"静态变量存放在全局区,全局区上的数据在程序结束后由系统释放。
return a;
}
这样好像就可以了!!!
Pay attention to 2:
(引用作函数返回值)函数的调用可以做为左值
引用的本质
本质:
引用的本质在c++内部是一个指针常量。
int a=10;
int & b = a;//自动转换为"int *const b=&a;指针常量是指针直线不可改,也说明为什么引用不可更改。
以上仅代表自己个人总结和理解,如有错误特别希望您能够指正。