前言
多多重复,百炼成钢!!!
目录
一、认识引用
1.对实体引用是该实体的别名-引用必须初始化
2.一旦引用了一个实体,就不能引用其他实体了-我称引用具有专一性
3.一个变量可以有多个引用(别名)
1.对实体引用是该实体的别名-引用必须初始化
#include<stdio.h>
int main()
{
int a = 520;
int& ra = a;//对a进行引用,别名初始化为ra
return 0;
}
2.一旦引用了一个实体,就不能引用其他实体了-我称引用具有专一性
3.一个变量可以有多个引用(别名)
#include<stdio.h>
int main()
{
int a = 520;
int b = 1314;
int& ra = a;//对a进行引用,别名初始化为ra
int& rb = a;//对a再一次引用,别名初始化为rb
return 0;
}
二、引用做参数
1.减少拷贝,节省空间和时间,提高效率
2.修改返回值-输出型参数,函数中修改形参,也修改实参一般我们调用函数用传值(形参)或传址(实参)。前者要在调用的函数的栈帧内开辟空间,但操作参数并不能改变外面的实参(缺点);后者可以用指针通过在调用函数通过对参数的操作改变实参。而引用刚好可以去其糟粕(去掉前者的缺点)取其精华(具有后者的作用)。
通过指针改变实参
通过引用改变实参
三、const引用
const引用可以减少拷贝,提高效率(不改变参数)-可以接收const和不const的参数(不想改变的参数才会加const)
这里涉及到了权限扩大缩小问题
-权限可以平移可以缩小但不能放大
-临时变量具有常性-不能修改
-const 引用可以缺省
#include<iostream>
using namespace std;
int main()
{
int a = 520;//可读可改
int& ra = a;//权限平移(可读可改)-可以
const int& rra = a;//权限缩小(可读不可改)-可以
const int b = 150;//(可读不可改)
int& rb = b;//-报错:权限放大(可读可改)-不可以
const int& rrb = b;//权限平移(可读不可改)-可以
return 0;
}
#include<iostream>
using namespace std;
void fun(const int& x);//cosnt的引用
int main()
{
int a = 520;//可读可改
const int& rra = a;//权限缩小(可读不可改)-可以
fun(a);//可读可改-const引用可接收
fun(rra);//可读不可改-const引用可接收
return 0;
}
-临时变量具有常性-不能修改
加上const就能通过啦!
-const 引用可以缺省
四、类型转换
类型转换-如:系统针对double类型的b创建出一份int类型的临时变量,然后赋给i
五、auto语法糖和引用底层实现概念
语法上,ra是a的别名,不开空间
底层实现,引用是使用指针实现的1.auto a=10,b=4.9(编译错误:a和b的初始化类型不同)
2.auto不能做形参的参数
3. auto不能声明数组
auto:根据a的类型判断b的类型
-可以不用思考参数的类型啦!直接auto就可以了(doge
总结
对引用的理解后就更有利于往后对c嘎嘎更深层次的学习啦!!!
如果以上内容对你有帮助的话不妨点个赞支持一下博主吧!!
本文含有隐藏内容,请 开通VIP 后查看