C++引用的学习

news/2025/2/4 12:27:44/文章来源:https://www.cnblogs.com/Alaso687/p/18698092

引用系列

本质:在C++内部是一个指针常量

1.语法 数据类型 &别名 = 本名

提要点:
1.引用必须初始化
2.引用在初始化后,不可改变值

#include<iostream>
using namespace std;//用引用代替指针
void swap1(int a,int b)
{int tmp = a;a = b;b = tmp;cout<<a<<" "<<b<<"\n";//仅在函数体内部交换
}
int main()
{//引用基本语法:实例// int a = 10;// int &b = a;// b = 20;// cout<<a<<"\n";// int a = 10;// int &b = a;// int &c = a;//报错!引用 变量 "c" 需要初始值设定项// int d = 20;// b = d;//赋值操作,而不是更改引用// cout<<b<<c<<"\n";int a = 10,b = 20;swap1(a,b);cout<<a<<" "<<b<<"\n";//值传递其实没有实质上的交换,只是拷贝了一份,在内部函数进行交换return 0;
}


2.引用传参

注意:形参会影响实参
地址传递

//地址传递
#include<iostream>
using namespace std;
void swap1(int *a,int *b)
{int tmp = *a;*a = *b;*b = tmp;
}
int main()
{int a = 10;int b = 20;swap1(&a,&b);cout<<a<<" "<<b<<"\n";return 0;
}

引用传递

#include<iostream>
using namespace std;
void swap1(int &ar,int &br)
{int tmp = ar;ar = br;br = tmp;
}
int main()
{int a = 10,b = 20;swap1(a,b);cout<<a<<" "<<b<<"\n";return 0;
}


3.引用做函数返回值

提要点:
1.不要返回局部变量的引用
2.函数调用作为左值(也就是函数调用可以被赋值)

#include<iostream>
using namespace std;
//不要返回局部变量
//原因如下
// int &test()
// {
//     int b = 10;
//     return b;
// //这里是返回局部变量,属于栈区,程序执行完后直接丢掉
// //我这里显示直接报错了
// }//接下来是函数可以作为左值的实例
int &test1()
{static int a = 10;//把它化为静态变量,属于全局区,不会因为程序的结束而自动释放变量return a;
}int main()
{// int &h = test();// cout<<h<<"\n";int &h = test1();cout<<h<<"\n";return 0;
}


4.常量引用

提要点:主要是为了防止误修改的值影响原本应该要操作的值

#include<iostream>
using namespace std;
void Print(const int &a)//改成const常量就不会轻易修改值了
{//a = 500;//如果我任意改一下值,那么形参里的数值也会变cout<<a<<"\n";
}
int main()
{//int &tmp = 10;//注意:这里报错了,引用的时候必须是一个合法的内存空间//const int &tmp = 10;//这里的const 将它修饰成了:/*int a = 10;int &tmp = a;*/int tmp = 10;Print(tmp); return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/878520.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCIe扫盲——TLP Header详解(二)

下面用几个具体的例子来讲解TLP Header的格式与作用。因为内容较多,所以分为多篇文章分别进行介绍。第一篇(即本文)介绍IO Request、Memory Request和Configuration Request。第二篇文章(即TLP Header详解三)介绍Completion ,第三篇文章(即TLP Header详解四)介绍Messag…

PCIe扫盲——TLP Header详解(一)

事务层包(TLP)的一般格式如下图所示:前面的文章介绍过,TLP Header为3DW或者4DW,Data Payload为1-1024DW,最后的TLP Digest(ECRC)是可选的,为1DW。 TLP Header在整个TLP的位置如下图所示,需要注意的是,TLP Header的格式和内容都会随着TLP的类型和路由方式的改变而改变…

龙哥量化:deepseek写技术指标,deepseek写选股公式,通达信deepseek写公式太牛了

龙哥微信:Long622889代写通达信技术指标、选股公式(通达信,同花顺,东方财富,大智慧,文华,博易,飞狐)代写期货量化策略(TB交易开拓者,文华8,金字塔) 2025的deepseek火出天际了,用来写技术指标,量化策略岂不是爽歪歪,哈哈 先说使用体验, 第一:写代码确实很强,…

这个记录一下,困扰了很久,usb网卡被隐藏。

这个问题困扰了很久,直到今天用了这个搜索。才发现问题,照做之后,usb网卡回来了。终于笔记本不用在连网线了,只连typtc扩展坞就可以了。没想到禁用之后,还被隐藏!!! 解决的链接。 https://blog.csdn.net/ljason1993/article/details/85884992

docker中提示permission denied

docker中使用mount命令报错:mount: permission denied使用docker exec -it dokcerID bash进入docker容器中,显示的是root,权限应该是足够,但是使用mount命令一直提示permission denie,很明显是权限不足造成的查看docker历史版本文档,发现docker在0.6之后引入了privileged…

使用Chainlit快速构建一个对话式人工智能应用体验DeepSeek-R1

Chainlit是一个开源的 Python 包,用于构建可用于生产的对话式人工智能。 DeepSeek-R1 是一款强化学习(RL)驱动的推理模型,解决了模型中的重复性和可读性问题。在 RL 之前,DeepSeek-R1 引入了冷启动数据,进一步优化了推理性能。它在数学、代码和推理任务中与 OpenAI-o1 表…

Mybatis-plus -2025/1/27

MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率DQL编程控制 // 创建 LambdaQueryWrapper 对象,用于构建查询条件LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();// 1. 等值查询// 添加等于条件,查询 usern…

springboot -2025/1/26

配置文件优先级: application.properties > application.yml > application.yaml YAML格式 YAML(YAML Aint Markup Language),一种数据序列化格式。 优点:容易阅读 yaml 类型的配置文件比 xml 类型的配置文件更容易阅读,结构更加清晰容易与脚本语言交互以数据为…

manim边学边做--局部变换

本次介绍的两个用于变换的动画类:TransformMatchingShapes和TransformMatchingTex。 它们的主要特点是对一组对象或一段文本进行局部变换,适用于复杂的图形或者文本的变换场景。 其中:TransformMatchingShapes:用于不同形状的 VMobject 间转换,能自动匹配相似形状并创建平…

读算法简史:从美索不达米亚到人工智能时代06人工智能现身

读算法简史:从美索不达米亚到人工智能时代06人工智能现身1. 人工智能现身 1.1. 在20世纪四五十年代,计算机在本质上被看成一种快速计算器1.1.1. 主机一个接一个地运行大量的数据处理作业(job),不与用户发生交互1.1.2. 最终的大量打印结果由操作员按批次(batch)展示给他们心怀…

2025 大盘

调整的差不多了 年后看3065附近

Qt展厅播放器/多媒体播放器/中控播放器/帧同步播放器/硬解播放器/监控播放器

一、前言说明 音视频开发除了应用在安防监控、视频网站、各种流媒体app开发之外,还有一个小众的市场,那就是多媒体展厅场景,这个场景目前处于垄断地位的软件是HirenderS3,做的非常早而且非常全面,都是通用的需求,这个场景需求,在播放这块,有几个明显的需求是,播放的视…