c++: 引用能否替代指针? 详解引用与指针的区别.

文章目录

  • 前言
    • 1. 引用和指针的最大区别:引用不能改变指向
    • 2. 引用和指针在底层上面是一样的
    • 3. 引用和指针在sizeof面前大小不同
    • 4. 有多级指针,没有多级引用
    • 5.引用++是引用的实体++,指针++会向后偏移同一个类型的大小
  • 总结


前言

新来的小伙伴如果不知道引用是什么?可以看我的上一篇文章


1. 引用和指针的最大区别:引用不能改变指向

指向是什么意思呢?指向就是指针所指向的地址.
在这里插入图片描述
在上面这一张图片中,我们要修改链表next指针所指向的位置.
从我的上一篇文章
可以知道,引用必须进行初始化,而初始化之后无法再进行修改,
但是我们在链表或者二叉树等数据结构中,我们是要改变指针的地址的.

2. 引用和指针在底层上面是一样的

在这里插入图片描述
引用是否有开辟空间
在语法上面引用并没有开辟空间,
但是我们可以看到,在底层实现上:引用和指针是一样的,所以在底层上引用有开辟空间

这也告诉我们语法和底层在某种方面是背离的(就跟老婆饼没有老婆一样).


3. 引用和指针在sizeof面前大小不同

在这里插入图片描述
在sizeof的意义不同,指针的大小是4/8字节,引用的大小取决于引用类型的大小.比如longlong的大小是8个字节,它的引用也是8个字节

4. 有多级指针,没有多级引用

我们给别名起别名(给弼马温取名齐天大圣本质上还是给孙悟空去别名),并不是多级引用.
而我们有二级指针,它存放的是一级指针的地址.

5.引用++是引用的实体++,指针++会向后偏移同一个类型的大小

在这里插入图片描述

总结

1.引用无法改变指向,所以引用无法替代指针,引用只是能在大多数情况下简化我们的代码
2.引用在语法上不占地址,指针开空间
3.因为引用必须进行初始化,所以引用比指针更安全一些,容易出现野指针,不容易出现野引用
4.在sizeof,++等意义不同
5.有多级指针,没有多级引用

c++祖师爷在设计的时候并不是想用引用替代指针,而是想方便我们的日常工作与学习.二者不是非黑即白,而是相辅相成.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

应用方案 | D78040场扫描电路

一 描 述 D78040是一款场扫描电路,偏转电流可达1.7Ap-p,可用于中小型显示器。 二 特 点 1、有内置泵电源 2、垂直输出电路 3、热保护电路 4、偏转电流可达1.7Ap-p 三 基本参数 四 应用电路图 1、应用线路 2、PIN5脚输出波形如下&#…

java中数组的定义与使用

Java中的数组跟c语言的数组几乎不一样,我们要区分对待。在之后你就能理解到我为什么说这句话了。 1.java中数组的创建与初始化 数组的创建 如下,皆为数组的创建。 double[] a; int[] b; 创建时的[]里面绝对不能填数字。 数组的初始化 主要分为动态…

Javaweb之Maven高级分模块设计与开发的详细解析

1. 分模块设计与开发 1.1 介绍 所谓分模块设计,顾名思义指的就是我们在设计一个 Java 项目的时候,将一个 Java 项目拆分成多个模块进行开发。 1). 未分模块设计的问题 如果项目不分模块,也就意味着所有的业务代码是不是都写在这一个 Java 项…

如何使用最大努力通知实现分布式事务?与本地消息表区别?

什么是最大努力通知? 最大努力通知(Best-Effort Notification)是一种在分布式系统中处理分布式事务的方法之一,它强调尽力而为,不保证完全的事务一致性,但可以通过一定的机制来提供部分保证。在最大努力通…

程序员有哪些常用的技术网站呢?

在当今信息化时代,程序员们能够通过互联网接触到许多优秀的技术网站,这些网站为他们提供了丰富的学习资源和交流平台。这些技术网站涵盖了各种软件开发、设计、数据分析和人工智能等领域,为程序员们提供了广阔的学习空间和交流机会。在这篇文…

蓝桥杯[OJ 3412]-最小化战斗力差距-CPP-贪心

目录 一、问题描述: 二、整体思路: 三、代码: 一、问题描述: 二、整体思路: 首先每个值都有可能为min(b),那么对于每个可能为min(b)的值,要使得max(a)尽可能小,因此枚举所有相差最…

每日学习笔记:C++ STL 的List

定义 特点 操作函数 关于c.merge(c2)的分析,详见: 。。。。 C list merge()用法及代码示例 - 纯净天空 (vimsky.com) 异常安全性 运用实例

Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 4-3、线条平滑曲面(原始颜色)去除无效点

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…

Arm MMU深度解读

文章目录 一、MMU概念介绍二、虚拟地址空间和物理地址空间2.1、(虚拟/物理)地址空间的范围2.2、物理地址空间有效位(范围) 三、Translation regimes四、地址翻译/几级页表?4.1、思考:页表到底有几级?4.2、以4KB granule为例,页表的…

抽象工厂模式——创建型模式

抽象工厂模式——创建型模式 抽象工厂模式是一种软件设计模式,它解决了在创建一组相关或相互依赖的对象时的一些核心问题。其核心问题包括: 对象的创建与使用分离: 抽象工厂模式通过引入抽象工厂接口以及具体工厂类,将对象的创建与…

高浓度氨氮废水如何处理达标排放

高浓度氨氮废水的处理和达标排放是环境保护工作中的重要任务之一。随着工业化进程的加速和人们环保意识的增强,如何有效处理高浓度氨氮废水已成为一个迫切需要解决的问题。本文将探讨高浓度氨氮废水的处理方法和技术,以确保其达到排放标准,减…

面向IoT物联网的时间序列引擎

1、背景 随着近年来业务的发展,尤其是机器产生的数据占比越来越高的趋势下,时序数据因为其业务价值越来越被更多地关注,也因而催生了专用的时间序列数据库,简称时序数据库(TimeSeries Database,TSDB&#x…

leetcode 热题 100_螺旋矩阵

题解一: 模拟:定义四个边界,指针按右下左上的顺序遍历,每遍历一条边,边界就减一,并且在某个方向没有可以遍历的数时直接返回。 import java.util.ArrayList; import java.util.List;class Solution {publi…

Python中的异常处理及最佳实践【第125篇—异常处理】

Python中的异常处理及最佳实践 异常处理是编写健壮、可靠和易于调试的Python代码中不可或缺的一部分。在本文中,我们将深入探讨Python中的异常处理机制,并分享一些最佳实践和代码示例,以帮助您更好地处理错误情况和提高代码的稳定性。 异常…

【2024泰迪杯】C 题:竞赛论文的辅助自动评阅 问题分析及Python 代码实现

【2024泰迪杯】C 题:竞赛论文的辅助自动评阅 Python 代码实现 2024 年(第 12 届)“泰迪杯”数据挖掘挑战赛 C 题:竞赛论文的辅助自动评阅 1 题目 一、问题背景 近年来我国各领域各层次学科竞赛百花齐放,层出不穷,学生参与度也…

NCDA大赛交互网页设计优秀作品有哪些?

现在,越来越多 UX/UI 设计者将互动 / 在其网站设计中添加动画元素(如鼠标悬停状态、音频或视频媒体、滚动交互等。).这样一方面可以让网站本身更加华丽有趣,吸引更多的访问者,激励访问者更加关注和阅读网站内容。这就是为什么互动网站设计已经…

CFINet

文章目录 AbstractIntroductionContributionsRelated Works锚点细化和区域候选小目标检测的特征模拟目标检测的对比学习MethodTowards Better ProposalsLimitations of Cascade RPNCourse-to-fine RPN(CRPN)Loss Function小目标检测的特征模拟范例特征Feat2Embed ModuleLoss …

speexsdp消除回声

这是testecho.c样例的程序。 初始化函数: SpeexEchoState *speex_echo_state_init(int frame_size, int filter_length); 可以看头文件说明:配置frame_size贞大小10-20ms,filter_length滤波长度100-500ms 比如采样频率是16K,fr…

代码签名的等级有哪些?怎么申请?

代码签名有OV,EV两种安全等级的证书,其中OV代码签名证书与EV代码签名证书的主要区别有以下几点: 1. 验证深度: - OV代码签名证书:进行组织验证,即证书颁发机构(CA)会验证申请者的公司或组织的真…

笔记本电脑已接通电源但未充电怎么办?这里提供8个解决办法

序言 你的笔记本电脑即使插上电源也不会充电吗?虽然大多数情况下,当充电适配器未正确连接时会发生这种情况,但在其他情况下,过时的BIOS或电池驱动程序损坏可能是原因。无论原因是什么,如果笔记本电脑已插入电源但未充电,你可以尝试以下修复程序。 检查笔记本电脑适配器…