C++引用与指针的比较

关于C++中指针和引用的速度 想写这篇博文的起因是某天突然有人问我,你知道C++中指针和引用有什么差别吗,我就按照我所以知道的叽里呱啦的讲了一堆(其实也就是随便拿本C++书都有说的那些),我讲完后对方得意地说你没讲到重点,重点是引用要比指针快得多。我一听傻了,说实话我从来没想过这个问题,既然有人说了,那就自己动手来看看,真是的情况是什么样的。我们来看案例1:环境:VS2008void Point(int *p) { for(int i = 0; i 阅读详情

在学习数据结构(C语言版)的时候,为了便于算法描述,除了值调用方式外,增添了C++语言的引用调用的参数传递方式。在这里将引用和指针进行一下比较:


C++引用与指针的比较

引用是C++中的概念,初学者容易把引用和指针混淆一起。

一下程序中,n是m的一个引用(reference),m是被引用物(referent)。

 int m;

 int &n = m;

n相当于m的别名(绰号),对n的任何操作就是对m的操作。

所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。

l   引用的规则:

(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。

(2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。

(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象),这里指不能再绑定其他的对象,只要不是const,就可以改变值,即可以通过引用改变绑定对象的值,因为它们其实是相同的。

以下示例程序中,k被初始化为i的引用。语句k = j并不能将k修改成为j的引用,只是把k的值改变成为6。由于k是i的引用,所以i的值也变成了6。

 int i = 5;

 int j = 6;

 int &k = i;

 k = j; // k和i的值都变成了6;

引用的主要功能是传递函数的参数和返回值。


引用:http://blog.sina.com.cn/s/blog_4c98b9600100abrf.html

[C++]指针、引用作函数形参的比较 设计一个函数,调用该函数时,实现整型变量x与y值得互换。如下程序: #include<iostream> using namespace std; void swap(int a,int b){int s;s=a;a=b;b=s} int main(){ int x=4,y=5; swap(x,y); cout<<x<<' '&lt... 阅读详情

相关推荐

C++ 引用与指针的比较与区别

引用和指针在C++中都是强大的工具,用于实现间接访问变量。引用是一个已存在对象的别名,不能为空,无需显式内存管理,而指针需要额外的存储空间,可以为空,并需要手动管理内存。在函数参数传递方面,引用和指针都可以实现修改传递变量的值,但使用引用参数更直观且不需要解引用运算符。它们都可以用于间接访问变量,但在使用和语义上存在一些明显的区别。本文将详细介绍C++引用和指针的比较与区别,并提供相应的源代码示例。引用通常更适合用于简单的别名和函数参数传递,而指针则更适合需要动态分配内存或需要空值表示的情况。

PixelLogic的博客 95

C++引用与指针问题以及效率

问题 今天刷leetcode的时候做到一道构造二叉树类型的题,发现算法写的没问题但是执行的返回总是为空,函数没有改变我传入的指针参数。原因是我传入的指针,并不是通过这个指针去修改其指向的内容,而是修改了这个指针的指向!然而我的参数传入方式是传值,因此传入的其实是指针的副本,而后函数中改变了这个副本的指向,但是最后退出函数的时候,调用函数中的指针其实是没有改变的。因此只能对指针也进行引用传递: TreeNode *&root 引用 引用是在C++中引入的,原始的C是只能通过传地址来实现的; 我们通常

weixin_40710708的博客 1618

海光(hygon)CPU ESXI vSphere 紫屏问题修复记录

海光服务器ESXI 紫屏问题修复

edison202302的博客 3549

指针和引用的区别

(1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。 #include<iostream> using namespace std; int main () { //以下三行代码 b是a 的引用。 int a = 1; int &b = a; cout

小风筝 695

国外无人机蜂群作战典型战例及发展趋势

参与袭击的无人机为简易组装的固定翼飞机,采用小排量活塞发动机和手机GPS通信模块零件,机翼为轻木加泡沫板混合结构,尾梁为铝合金方管,主要依靠胶带粘接,以上全部配件均可在商用市场买到,成本较低,可在短时间内装配完成。③战场纵深短、瞬时性强。蜂群作战的参战数量显著增加,这一方面得益于无人机技术的飞速发展使得廉价无人机可以大量生产和仿制,另一方面凭借迅速发展的投放和回收技术以及集群控制技术,使得无人机蜂群可在极短时间内实现编队饱和攻击,在快速消耗敌方高价值防空武器系统的同时,保证己方物资系统的突防概率。

renhongxia1的博客 2479

单细胞分析实录(12): 如何推断肿瘤细胞

公众号后台回复20210418,获取本文的测试数据 1. 回顾 前面我已经讲解了inferCNV的基本用法,这一节继续学习:如何推断肿瘤细胞。本文应该是到目前为止,全网最详细的帖子(之一)。 关于肿瘤细胞的推断,比如研究上皮细胞起源的肿瘤,我见过的一些做法如下 简单粗暴型:将来源肿瘤病灶的所有上皮细胞都看成是肿瘤细胞 看CNV:将来源于肿瘤病灶的上皮细胞和参考细胞比较,将那些有明显CNV的细胞看作肿瘤细胞 看表达特征:考虑到有的肿瘤细胞可能没有CNV层面的变化,有的文章会根据肿瘤与正常的表达谱来区分是.

TOP生物信息 1万+

c++中引用和指针的区别

c++中引用和指针的区别

limengshi138392的博客 3368

LPDDR6与LPDDR5 channel/rank/die/bank技术探讨

LPDDR6与LPDDR5 channel/rank/die/bank技术探讨

zilan23的博客 3641

c++ 指针和引用的区别

下面是一个很常见的32位平台上的无类型指针    int* p=100; 从内存的角度来看待指针 其实就是 一段内存  ,这个p本身就是一个4字节大小的内存 ,用来存储一个值为100的值,因为p是一个指针类型,当程序运行的时候就会对p进行一个地址解析,程序会认为100是一个int型的内存地址,,通过运行环境找到这个100的地址,再根据指针类型取相应大小的值,也就是说 从p开始取值一直到取出in

xiedongchi的博客 339

(11)(2.2.2) BLHeli32,AM32, and BLHeli_S ESCs(一)

Ardupilot官网关于《Peripheral Hardware》的翻译 —《(2.2.2) BLHeli32,AM32, and BLHeli_S ESCs》。

无人机开发(开源Ardupilot) 2230

在Simulink中实现一个基于SiC MOSFET的高效率电机驱动系统

本文介绍了在Simulink中构建基于SiC MOSFET的高效率电机驱动系统的详细流程。系统由直流电源模块、SiC MOSFET逆变器模块、PMSM电机模型、控制策略模块(包括矢量控制和PWM生成)以及反馈测量模块组成。文章逐步指导了从模型创建到参数设置的完整过程,包括各模块的具体实现方法。通过仿真可以评估系统在不同负载条件下的响应速度、效率、功率密度等性能指标。该建模方法为电机驱动系统的设计和优化提供了有效工具,同时建议根据实际硬件规格和工程需求进行参数调整和定制化开发。

xiaoheshang_123的博客 248

C++ 引用与指针的比较

文章目录 引用是 C++ 中的概念 n 是m的一个reference,m 是被引用物(referent)。 int m; int &n = m; n 相当于 m 的别名,对 n 的任何操作就是对m的操作。 n 既不是m的拷贝,也不是指向 m 的指针,其实n就是 m 它自己。   引用被创建的同时必须被初始化(指针则可以在任何时候被初始化) 不能有 NULL 引用,引用必须与...

fgh123的博客 453

有之以为利,无之以为用,在 RAP 开发里的虚实取舍

摘要(149字) SAP RAP框架通过"有"与"无"的哲学平衡实现业务应用价值。其"有"体现在CDS视图、行为定义、服务绑定等具体对象,为系统提供形体;而"无"则表现为保留的扩展空间、未暴露的实现细节和框架托管的生命周期。在采购审批应用中,RAP既通过明确定义的行为模型建立业务语义,又通过验证、动作等机制保持灵活性。这种架构既确保核心功能稳固,又为未来演进留出余地,印证了"有之以为利,无之以为用"的技术智慧

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1302

C++指针与引用比较

文章目录C++中指针与引用的区别何时使用指针,何时使用引用 C++中指针与引用的区别 指针用操作符&amp;amp;quot;*“和”-&amp;amp;amp;gt;&amp;amp;quot;,引用使用操作符&amp;amp;quot;&amp;amp;amp;amp;&amp;amp;quot;。指针与引用都是让你间接引用其他对象。 首先,在任何情况下都不能使用指向空值的引用。一个引用必须指向某个对象。如果一个变量在某些时候可能不指向任何对象,

记忆碎片的博客 289

Fastgpt本地使用Docker Compose 快速部署

修改文件,并执行再执行d重起容器。具体配置,参考配置详解。可以查看日志,在启动容器后,第一次请求网页,会进行配置文件读取,可以看看有没有读取成功以及有无错误日志。进入 FastGPT 容器,可以通过ls data查看目录下是否成功挂载文件。可通过查看配置文件。可能不生效的原因挂载目录不正确配置文件不正确,日志中会提示invalid json,配置文件需要是标准的 JSON 文件。

洛阳泰山的博客 1630

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C++中引用与指针的比较

l   C++引用与指针的比较 引用是C++中的概念,初学者容易把引用和指针混淆一起。一下程序中,n是m的一个引用(reference),m是被引用物(referent)。 int m; int &n = m;n相当于m的别名(绰号),对n的任何操作就是对m的操作。所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。l   引用的规则:(1)引用被创建的同

NetBug的专栏 4587

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C++之指针与引用的比较

引用是一个变量的别名,它提供了一种通过不同名称访问同一变量的方式。引用在声明时必须被初始化,并且一旦绑定到一个变量,就不能再改变其绑定。指针是一个变量,其值是另一个变量的内存地址。在C++编程中,指针和引用是两个非常重要的概念。它们都用于间接访问变量,但在语法和语义上有显著的区别。引用的声明使用与指针相似的符号,但不需要显式的解引用操作。在这个示例中,指针用于动态分配和释放内存,而引用无法实现这一功能。),我们可以访问指针所指向的变量的值。函数通过指针修改变量的值,而。函数通过引用修改变量的值。

apple_51673523的博客 941

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【C++】——引用与指针的比较

引用从表层来看就是内存单元的别名。从底层来看,和指针处理相同,也开辟内存,在用到引用变量的地方系统会自动解引用。一般初学者很容易把引用和指针混淆一起,但他们并不一样。 int m; //m是被引用物 int &n=m; //n是m的一个引用 n 相当于 m 的别名(绰号),对 n 的任何操作就是对 m 的操作。例如有人名叫王小 毛,他的绰号是“三毛”。说“三毛”怎么怎么...

Dr_Cassie的博客 302

《高质量C++编程指南》番外篇--引用与指针的比较?为什么要使用引用?

目录 引用与指针的比较 引用规则: 举例: C++中函数的参数和返回值传递方式有三种:值传递、指针传递和引用传递 1.值传递 2.指针传递 3.引用传递 引用很像指针,为什么有指针了还要引用? 本内容隶属于第6章函数设计第6.6节,但是内容极其重要,所以单独学习总结 函数接口的两个要素是参数值和返回值。 C语言中,函数的参数和返回值得传递有两种:值传递和指针传递。 C++语...

王博(Kings)的博客 2213

C++中值传递、指针传递和引用传递的比较

C++引用与指针的比较  引用是C++中的概念,初学者容易把引用和指针混淆一起。  一下程序中,n是m的一个引用(reference),m是被引用物(referent)。  int m;  int &n = m;  n相当于m的别名(绰号),对n的任何操作就是对m的操作。  所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。  引用的规则:  (1)引用被创

一直在路上 1059

C++中值传递、指针传递和引用传递的比较详解

c++

u011555996的博客 392
上一篇: 原码, 反码, 补码 详解
下一篇: SQL 语句(一)--------------模式及表的定义
SuilandCoder
博客等级 码龄11年 11粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值