当前位置: 首页 > news >正文

引用传递(c++基础知识)

本文仅仅浅浅讨论引用,数据结构代码中有涉及到,给考研c++基础薄弱的伙伴们一点启发

一、引用的概念:

引用就是某一变量(目标)的一个别名,也就是说,它是某个已存在变量的另一个名字。对引用的操作与对变量名直接操作完全一样。
他们指向同一块内存空间。
引用的初始化:类型标识符 &引用名=目标变量名;

上述格式中,“&”,并不是取地址操作符,而是起标识作用,标识所定义的标识符是一个引用。引用声明完成以后相当于目标变量有两个名称.例:
int a = 10;
int &b = a;

在这里插入图片描述
可以看出修改p的值直接就是修改了a的值。在内存中就是这样体现的。
在这里插入图片描述

定义引用注意事项:

1、引用在定义时必须初始化,如int &b;是错误的。
2、引用在初始化时只能绑定左值不能绑定常量值。
int &p = 10;//错误写法
3、引用一旦初始化,其值就不能再更改,即不能再做别的变量的引用
4、数组不能定义引用,因为数组是一组数据,无法定义其别名。

5、 引用 vs 指针
三个主要的不同:
1.不存在空引用。引用必须连接到一块合法的内存。
2.一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
3.引用必须在创建时被初始化。指针可以在任何时间被初始化。

引用应用

1、C++增加引用的类型,主要的应用就是把它作为函数的参数,以扩充函数传递数据的功能,引用作函数参数时是区别于值传递与址传递的引用传递。

值传递缺点是需要再内存中在开辟一块空间复制实参,并且还不能够改变主函数中实参的值,也就是值传递中形参只是实参的一份临时拷贝

在这里插入图片描述

传地址调用就是可以节省空间,省去复制实参,是直接通过地址找到这部分空间,并通过指针进行对实参的直接使用和修改的

在这里插入图片描述

引用传递:利用引用传递可以克服 值传递与址传递中容易出现错误且程序的可读性差的缺点。直接操作变量,简单高效可读性又好

在这里插入图片描述
1、如果这里我使用值传递就会导致无法直接交换a,b
2、如果使用地址传递,就需要在变量p1,p2前面加上星号代码可读性差
3、使用引用,直接在相应的内存空间进行交换,可以规避这些缺点

我们来看一道数据结构链表的代码,使用引用传递的单链表

这里的引用传递就直接可以代表指针空间,也就是头指针的别名,对L在初始化函数进行操作也就相当于对头指针进行操作了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/187455.html

相关文章:

  • 【HCIA】浮动路由
  • 无人机失联保护模块技术解析!
  • Android设备是否满足硬件要求
  • day19-线性表(顺序表)(链表)
  • Spring 集成 SM4(国密对称加密)
  • 计算机系统----软考中级软件设计师(自用学习笔记)
  • 【TDengine源码阅读】TAOS_DEF_ERROR_CODE(mod, code)
  • Babylon.js学习之路《四、Babylon.js 中的相机(Camera)与视角控制》
  • plus-uiRuoYi-Vue-Plus 基于pgSql本地运行实践
  • 20250512期:基于arcpy数据驱动的大批量规范化出图
  • 从入门到精通:Drools全攻略
  • centos9安装docker 配置docker代理
  • 阿克曼-幻宇机器人系列教程2- 机器人交互实践(Topic)
  • ubuntu部署supabase
  • flutter编译时 设置jdk版本
  • 在Java中实现Parcelable接口和Serializable接口有什么区别?
  • 工程师必读! 3 个最常被忽略的 TDR 测试关键细节与原理
  • T-BOX硬件方案深度解析:STM32与SD NAND Flash存储的完美搭配
  • 音频转文字-在线工具包及使用记录
  • 2025年PMP 学习十一 第8章 项目质量管理(8.3)
  • 分布式链路跟踪
  • qemu热迁移后内存占用突增问题
  • C++23 ranges::range_adaptor_closure:程序定义的范围适配器闭包的辅助类
  • Starrocks的主键表涉及到的MOR Delete+Insert更新策略
  • 【阿里云】阿里云 Ubuntu 服务器无法更新 systemd(Operation not permitted)的解决方法
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】金融风控分析案例-10.4 模型部署与定期评估
  • 从HTTP轮询到WebSocket:如何让体育API性能提升100倍?
  • 【Python 中文编码】
  • 关于网站提交搜索引擎
  • Protobuf工具