【C++系列P2】引用——背刺指针的神秘刺客(精讲一篇过!)

news2024/10/7 20:36:30

前言

  • 大家好吖,欢迎来到 YY 滴 C++系列 ,热烈欢迎!
  • 如标题所示,本章主要内容主要来侃侃“引用”这个刺客!如下就是大纲啦~

一.引用


1.含义与特点

引用,即取别名。它的最大特点是编译器不会为引用变量而开辟空间,他们共用同一块空间。 


2.引用和指针的区别(主要) 

1.引用使用时必须要初始化

2.引用在初始化时引用一个实体后,不能再次引用其他实体,只能赋值。

3.引用使用起来更安全

图示:


3.引用的实际使用


一.引用作为参数

作为输出型参数时,面对大对象/深拷贝对象时,由于不用另外开辟空间拷贝,可以提高效率


二.引用作为返回值  

小目录:

  1. 适用场景
  2. 修改返回值+获取返回值 (使通讯录代码更简洁)

1.不适用场景: 

适用场景:(静态区栈帧不销毁)


2.实际应用 

  • 在通讯录中,用传统的方法,需要“查找"到对应pos位置后再“修改”
  • 而运用“引用作为返回值”,可直接对查找到的值进行修改。 

原本操作:

改进后操作: 

 


3.引用过程中的权限问题(平移,缩小,放大) 

  1. 首先我们要知道,临时变量是具有常性const 修饰的类型也具有常性static的数据存储在静态区同样具备常性
  2. const和static的权限理论上平级,而临时变量的权限低于二者。
  3. 只能存在权限平级和权限缩小的情况,不能存在权限放大的情况。通俗而言:权限低的不能给权限(常性)强的取别名。

权限相关知识点:权限等级较高的是const和具有常属性的量,权限较低的是普通数据

  • 权限高的或平级的可以给另一量取别名/取地址(权限的缩小平移
  • 权限低的不能给另一量取别名/取地址(权限的放大

图示:

1.平级和权限缩小的情况

 

 2.权限平移情况

 3.权限放大情况

 PS:const原则上不能修改,但是可以通过找到其空间直接修改。(指针/别名)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Segment Anything——图像分割的基础模型介绍

人工智能中的基础模型变得越来越重要。这个术语开始在 NLP 领域加快步伐,现在,随着 Segment Anything Model 的出现,他们也慢慢进入了计算机视觉领域。Segment Anything是 Meta 的一个项目,旨在为图像分割的基础模型构建起点。在本文中,我们将了解 Segment Anything 项目最…

Python:Python编程:从入门到实践__超清版:线程

Python线程与安全 实现线程安全有多重方式,常见的包括:锁,条件变量,原子操作,线程本地存储等。 💚 1. 锁2. 条件变量3. 通过 join 阻塞当前线程4. 采用 sleep 来休眠一段时间5. 原子操作5.1 使用 threading…

HTTP请求中token、cookie、session有什么区别

cookie HTTP无状态的,每次请求都要携带cookie,以帮助识别身份服务端也可以向客户端set-cookie,cookie大小4kb默认有跨域限制:不可跨域共享,不可跨域传递cookie(可通过设置withCredential跨域传递cookie) cookie本地存…

【EXata】5.4 连接到互联网

目录 5.4 连接到互联网 5.4.1 Windows 互联网网关配置 5.4.3 验证互联网网关配置 5.4 连接到互联网 EXata 允许在操作主机上运行的基于 Internet 的应用程序通过模拟网络连接到 Internet。这使得即时通讯、流媒体视频、VoIP 等应用程序可以像在现实世界中一样在 EXata 上运行。…

理解Java关键字volatile

原文链接 理解Java关键字volatile 在Java中,关键字volatile是除同步锁以外,另一个同步机制,它使用起来比锁要简单方便,但是却很容易被忽略,或者被误用。这篇文章就来详细讲解一下volatile它的作用,它的原理…

【图像水印 2022 ACM】PIMoG

【图像水印 2022 ACM】PIMoG 论文题目:PIMoG: An Effective Screen-shooting Noise-Layer Simulation for Deep-Learning-Based Watermarking Network 中文题目:PIMoG:深度学习水印网络中一种有效的截屏噪声层仿真 论文链接:https://dl.acm.o…

Redis-- 缓存预热+缓存雪崩+缓存击穿+缓存穿透

Redis-- 缓存预热缓存雪崩缓存击穿缓存穿透**加粗样式** 一 面试题引入二 缓存预热三 缓存雪崩3.1 问题现象3.2 预防解决 四 缓存穿透4.1 定义4.2 解决方案4.2.1 空对象缓存或者缺省值4.2.2 Google布隆过滤器Guava解决缓存穿透 五 缓存击穿5.1 定义5.2 危害5.3 解决 六 总结 一…

Excel·VBA统计多部门多商品销售量前10%的商品

如图:根据表中唯一的货品ID,有m个事业部中分别有n种货品,统计各事业部销量前10%的货品名称,生成统计表(以下为2种统计方式) 目录 仅统计货品ID方法1:字典嵌套字典结果 方法2:自定义函…

【LED子系统】十、详细实现流程(番外篇)

个人主页:董哥聊技术 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强公司! 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 文章目录…

Hive ---- 文件格式和压缩

Hive ---- 文件格式和压缩 1. Hadoop压缩概述2. Hive文件格式1. Text File2. ORC3. Parquet3. 压缩1. Hive表数据进行压缩2. 计算过程中使用压缩 1. Hadoop压缩概述 为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器,如下表所示: Hadoo…

CodeForces..李华和迷宫.[简单].[找规律]

题目描述: 题目解读: 存在矩阵迷宫nm,(r,c)表示从顶部开始的第r行和左起第c列。 如果两单元格共享一个边,则是相邻的。路径是相邻空单元格的序列。 每个单元格初始状态都为空。对于从&#x…

代码随想录额外题目——图论部分

记录一下代码随想录中额外题目的图论部分 841.钥匙和房间 有 n 个房间,房间按从 0 到 n - 1 编号。最初,除 0 号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而,你不能在没有获得钥匙的时候进入锁住的房间。 当你进入一个…

山海大模型亮相,云知声交出AGI第一份答卷

有人说,AI大模型是少数巨头才能玩得转的游戏。 截至目前,认同此观点的人不在少数。自从ChatGPT去年迅速火遍全球之后,忽如一夜春风来,AI大模型遍地开。Google、Amazon、阿里、百度等巨头们纷纷加入AI大模型的“军备竞赛”&#x…

【数据分享】1929-2022年全球站点的逐日平均气温数据(Shp\Excel\无需转发)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,其中又以气温指标最为常用!说到气温数据,最详细的气温数据是具体到气象监测站点的气温数据!本次我们为大家带来的就是具体到气象监…

大数据分析案例-基于决策树算法构建世界杯比赛预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

EMC VNX Unified Storage 关机顺序方法

EMC Unfied的VNX存储系统要比单纯的Block系统复杂很多,相当于是两套存储系统,不管在物理硬件上还是逻辑的软件OS上,都复杂很多很多。 客户经常遇到由于机房停电或者机房搬迁等情况,需要对存储系统做关机下电甚至物理搬迁的动作&a…

FPGA基于AXI 1G/2.5G Ethernet Subsystem实现UDP通信DMA传输 提供工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、详细设计方案传统UDP网络通信方案本方案详细设计说明DMA和BRAMAXIS-FIFOUDP模块设计UDP模块FIFOAXI 1G/2.5G Ethernet Subsystem:输出 4、vivado工程详解5、上板调试验证并演示注意事项 6、福利:工程代码的获取 1、…

【simple-cache】一款只用一个注解就实现缓存的框架-我们终于迎来了SpringBoot版本

上次我们讲了【simple-cache】的使用: 【simple-cache】我开发了一款只要一个注解就可以轻松实现缓存的框架 这次主要更新的内容为: 添加springboot项目框架中去除了redisconfig类,避免了redis的单机和集群问题用户可以自定义使用自己项目中…

Python之字符串(str)基础知识点

strip() 删除指定字符 当token为空时,默认删除空白符(含’\n’,‘\r’,‘\t’,’ ),当非空时,根据指定的token进行删除。 字符的删除又可分为以下几种情况: string.strip(token):删除string字符串中开头(left)、结尾处(right)的…

【操作系统】02.进程管理

多道程序系统 多道就是将多个程序同时装入内存,使之并发运行。操作系统也是基于多道产生的,提高了资源利用率和系统吞吐量。 进程 定义 进程是程序的一次执行 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位 在引入线…