初阶-引用

发布于:2022-12-14 ⋅ 阅读:(460) ⋅ 点赞:(0)

 


前言

多多重复,百炼成钢!!!

目录

多多重复,百炼成钢!!!

一、认识引用

二、引用做参数

 三、const引用

四、类型转换

五、auto语法糖和引用底层实现概念

总结



一、认识引用

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 后查看