怎么建设自己的独立网站/营销策略模板
在C++中,引用(reference)是一个已存在变量的别名(alias)。比如鲁讯原名周树人,前者就是后者的别名。
一、引用的用法
定义引用时需要用到&,用法如下:
int ival = 9527;
int &refVal = ival; // refVal指代ival,是ival的另一个名字
二、引用的注意事项
引用是对象的第二个名字,像个寄生虫一样寄生在原名之上,因此定义时必须要与原名(某个已存在的变量)绑定,下面的定义是错误的:
int &refVal; // 错误:引用在定义时必须要初始化
寄生虫有个特点,离开宿主就会完蛋。求生的欲望把引用打造成一个特别忠贞的孩子:一旦绑定,终身不改,再也不能换对象。从这个特性可以推断出,引用内部的实现应该是一个常量指针。
前面的int &refVal = ival;用C语言表示相当于:
const int *refVal = &ival;
三、引用的主要用途
在功能上,引用和指针(pointer)比较相像,主要用于函数参数传递。普通的变量是以“传值”的方式传递参数,需要将实参的值复制给形参,在函数中改变的是形参,而不是赋值给形参的实参。这就像我盖了一个和我的房子一模一样房子送给你,这个工程量是很大的,而且你装修是你的房子。
指针以“传址”的方式传递参数,传过去的是地址,在函数中是能改变实参的。这就像我把我房子的地址告诉你,你按地址找到我家,装修的是我的房子。
引用是以“传名”的方式传递参数,传过去的是变量的名字,在函数中也是能改变实参的。这就像我把我的房子的名字告诉你,你一样能找到我的房子。
引用在内部实现上也是用了指针的,但是用引用会更方便(语法层面,引用不需要用&获取地址,也不需用*访问数据)。就像你打车去找福尔摩斯,如果说去贝克街221号,司机可能要反应一会儿,但如果直接说去福尔摩斯家,它可能立马反应出他家的位置(但不一定知道是贝克街221号)。
用最经典的“交换两个变量”来验证三种传递参数方式的区别:
#include<iostream>
using namespace std;//普通变量:传值版
void swap1(int a, int b){int t=a;a=b;b=t;
}//指针:传址版
void swap2(int *a, int *b){int t=*a;*a=*b;*b=t;
}//引用:传名版
void swap3(int &a, int &b){int t=a;a=b;b=t;
}int main(){//普通变量:传值版int a=3, b=9;swap1(a, b);printf("%d %d\n", a, b);//指针:传址版a=3, b=9;swap2(&a, &b);printf("%d %d\n", a, b);//引用:传名版a=3, b=9;swap3(a, b);printf("%d %d\n", a, b);return 0;
}
输出结果:
显而易见,引用能用实现指针的功能,但用起来比指针方便得多。
四、引用与指针的区别
引用的寄生性决定了与指针的区别
①引用在声明时必须初始化,而指针不必。
②引用一旦初始化,就不能再指向其他对象,而指针可以随时改变它所指向的对象。
③不存在空引用,但存在空指针。
④引用一旦初始化,就可以像普通变量一样使用,不需要使操作符*访问数据,指针在访问所指向的对象时需要使用操作符*。
相关文章:

C++的“引用”是条寄生虫
在C中,引用(reference)是一个已存在变量的别名(alias)。比如鲁讯原名周树人,前者就是后者的别名。 一、引用的用法 定义引用时需要用到&,用法如下: int ival 9527; int &am…...

人体感应提醒 大声公+微波模块
文章目录 模块简介接线程序示例 模块简介 微波感应开关模块 RCWL-0516是一款采用多普勒雷达技术,专门检测物体移动的微波感应模块。采用 2.7G 微波信号检测,该模块具有灵敏度高,感应距离远,可靠性强,感应角度大&#…...

正确的功能可将热晶体管风速计线性化
处理传感器电路输出信号的电路或计算公式必须生成传感器响应的反函数。例如,如果传感器响应是对数函数,则线性化部分的响应必须是指数的。 这项工作首先获取传感器响应的 46 个离散点(参见参考论文中的图 4)。刚开始时࿰…...

小程序集arcgis地图显示自定义坐标的功能实现记录!(学习笔记)
最近再做一个新能源回收项目,项目中有个根据回收点坐标数据显示区域内回收点位置,点击图标直接导航到该位置,及分布的需求,研究了一下,实现效果如下,实现起来很简单,代码及效果 回收点位置及分…...

谷歌医疗大模型登Nature,Med-PaLM重磅揭秘!AI医生成绩比肩人类
5月I/O大会上,Med-PaLM 2重磅升级,甚至达到了专家水准。 今天,谷歌揭秘微调后的Med-PaLM,同样在医学问题上一骑绝尘。 研究成果已登Nature。 论文地址:https://www.nature.com/articles/s41586-023-06291-2 这项研究…...

java-字符串相关类的底层原理
在 Java 中,字符串处理是编程中的一个常见任务。Java 提供了多种字符串相关的类,如 String, StringBuilder, StringBuffer 和 CharSequence 等,以满足不同的需求。这些类的底层原理基于 Java 内部的数据结构和算法。在本教程中,我…...

C++模板编程—学习C++类库的编程基础
课程总目录 文章目录 一、详解函数模板二、类模板三、类模板实践:实现向量容器vector四、理解容器空间配置器allocator的重要性 一、详解函数模板 模板的意义:对类型也可以进行参数化了 // 也可以用template<class T>,但class容易和类…...

[每周一更]-(第99期):MySQL的索引为什么用B+树?
文章目录 B树与B树的基本概念B树(Balanced Tree)B树(B-Plus Tree)对比 为什么MySQL选择B树1. **磁盘I/O效率**2. **更稳定的查询性能**3. **更高的空间利用率**4. **并发控制** 其他树结构的比较参考 索引是一种 数据结构&#x…...

详解MySQL的MVCC机制
多版本并发控制(MVCC,Multi-Version Concurrency Control)是MySQL InnoDB存储引擎用于实现事务隔离和提高并发性能的一种机制。MVCC通过在同一数据的多个版本之间进行管理,允许读写操作并发进行,从而避免了传统锁机制带…...

docker部署skywalking
skywalking版本下载 1:拉取skywalking的oap镜像(可以选择自己的版本,最好与ui,agent版本一致) docker pull apache/skywalking-oap-server:9.5.02:启动oap docker run -d -p 11800:11800 -p 12800:12800 --name sw_oap apache/…...

Mac 使用Docker安装Elasticsearch、Kibana 、ik分词器、head
安装ElasticSearch 通过docker安装es docker pull elasticsearch:7.8.1 在本地创建elasticsearch.yml文件 mkdir /Users/ky/Documents/learn/es/elasticsearch.yml 编辑yml文件内容 http: host: 0.0.0.0 xpack.security.enabled: false xpack.security.enrollment.enabled: t…...

【Webpack4打包机制原理解析】
webpack是一个打包模块化 JavaScript 的工具,在 webpack里一切文件皆模块,通过 Loader 转换文件,通过 Plugin 注入钩子,最后输出由多个模块组合成的文件。webpack专注于构建模块化项目。 # 简单版打包模型步骤 我们先从简单的入手…...

如何提高接口响应速度
在非大数据(几万以上记录)的情况下,影响接口响应速度的因素中最大的是查询数据库的次数,其次才是数组遍历和简单数据处理(如根据已有字段增加新的属性,或计算值)。 一般一次数据库查询需要50毫秒…...

项目敏感配置信息加固
概述 引入jasypt做密码等敏感配置信息的加固 项目集成依赖 pom.xml引入jasypt-spring-boot-starter依赖 <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.…...

HCIA-AI课程大纲
该阶段详细介绍各个机器学习范式方法,涵盖有监督、无监督、半监督、强化学习,以及深度学习算法基础,共计 72 课时。 第一节:华为云 ModelArts 云服务开发环境搭建 - (2 课时) - 华为云 ModelArts 云服务简…...

keil program algorithm 出错
前段时间 在 调试下载算法时,遇到一个奇怪的问题 就是 加载下载算法后, 下载算法的RAM空间 大小不能修改为 单片机的最大RAM,只能改到最大4KB的空间大小, 再大就报错 刚开始报错 一直不知道原因,走了很多弯路, 到最…...

SITNE24V2BNQ-3/TR一种瞬态电压抑制器,对标PESD1CAN
SITNE24V2BNQ是一种瞬态电压抑制器,设计用于保护两个汽车控制器区域 网络(CAN)母线不受ESD等瞬变造成的损坏。 SITNE24V2BNQ采用SOT-23封装。标准产品不含铅和卤素。 产品参数 方向:双向通道数:2VRWM(V)(Max):24IPP8/20μS(A)(M…...

Vue3【四】使用Vue2的写法写一个新的组件子组件和根组件
Vue3【四】使用Vue2的写法写一个新的组件 Vue3【四】使用Vue2的写法写一个新的组件 Vue3是向下兼容的,所有可以使用Vue的选项式写法 运行截图 目录结构 文件源码 App.vue <template><div class"app"><h1>你好世界! 我是App根组件<…...

指标体系建设10大坑
在企业经营和运营管理中,指标体系的建设至关重要,它在一定程度上是反映业务的问题状况,影响决策者的决策。但是,在指标体系的建设过程中,常常会存在一些不容忽视的“坑”,今天做个总结,以下为个…...

ubuntu 20.04上docker 使用gpu
要在Docker容器中使用GPU,你需要确保系统上已经安装了正确的NVIDIA驱动程序,并且安装了NVIDIA Container Toolkit。以下是详细的步骤: 1. 安装NVIDIA驱动程序 确保你的系统上已经安装了适当版本的NVIDIA驱动程序。你可以通过运行以下命令来检查驱动程序是否正确安装: nv…...

短剧系统投流版开发,为运营公司投流业务赋能
短剧系统投流版开发是一项复杂的任务,旨在为运营公司的投流业务提供强大的技术支持和赋能。以下是一些关键步骤和考虑因素,以确保短剧系统投流版的成功开发: 一、明确业务需求与目标 首先,需要深入了解运营公司的业务需求、目标…...

入坑必看的几个嵌入式方向热点问题
我们为何要学嵌入式?---需求、薪资、长期发展 嵌入式是成为下一个JAVA吗? 互联网开发和嵌入式开发怎么选? 高薪热门就业方向有哪些? 刚入门,刚毕业,学完没有“工作经验”,能有人要吗&#x…...

电能表如何与智能家居进行有效的融合
随着智能家居技术的不断发展,越来越多的家庭开始使用智能家电、智能照明、智能安防等智能设备,以实现更加便捷、舒适、安全的居住环境。而电能表作为电力系统中不可或缺的一环,不仅承担着计量电能的重要职责,还可以为智能家居系统…...

jmeter多用户登录并退出教程
有时候为了模拟更真实的场景,在项目中需要多用户登录并退出操作,大致参考如下 多用户登录前面已经实现:参考博文 多用户登录并退出jmx文件:百度网盘 提取码:0000 一、多用户退出操作 添加一个setUp线程组࿰…...

阿里云ECS实例镜像本地取证
更新时间:2024年03月21日10:09:37 1. 说明 很多非法案件中,服务器是直接搭建在阿里云上的,比如我们在拿到OSSKey之后(技术方法、其它方法等),可以将涉案服务器镜像导出,在本地进行取证分析。 …...

不要硬来!班组管理有“巧思”
班组管理,听起来似乎是一个充满“硬气”的词汇,让人联想到严肃、刻板的制度和规矩。然而,在实际操作中,我们却需要运用一些“巧思”,以柔克刚,让班组管理既有力度又不失温度。 在班组管理中,我们…...

[原创][Delphi多线程]使用TMonitor和TQueue配合实现TThreadedQueue的经典使用案例.
[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delph…...

vue3 基于el-tree增加、删除节点(非TypeScript 写法)
话不多说,直接贴代码 <template><div class"custom-tree-container"><!-- <p>Using render-content</p><el-tree style"max-width: 600px" :data"dataSource" show-checkbox node-key"id" …...

小抄 20240607
1 一定要多接触幸运的人,好运的人更有可能继续好运。 这不是迷信,好运的背后是见识、性格、逻辑的加持,一定有过人之处,才能经常好运。 反过来,那些经常走霉运的人,一定是底层逻辑出了问题,陷…...

【GIS教程】土地利用转移矩阵
随着科技社会的不断进步,人类活动对地理环境的影响与塑造日益明显,土地不断的侵蚀与改变也导致一系列的环境问题日益突出。土地利用/覆盖(LUCC)作为全球环境变化研究的重点问题为越来越多的国际研究机构所重视,研究它的…...