当前位置: 首页 > 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在初始化函数进行操作也就相当于对头指针进行操作了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

  • 【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)
  • 新能源汽车,告别混乱创新
  • 习近平同巴西总统卢拉共同出席合作文件签字仪式
  • 国家林业和草原局原党组成员、副局长李春良接受审查调查
  • 学者的“好运气”:读本尼迪克特·安德森《椰壳碗外的人生》
  • 国产水陆两栖大飞机AG600批产首架机完成总装下线
  • 专访|日本驻华大使金杉宪治:对美、对华外交必须在保持平衡的基础上稳步推进