【C++】 引用学习

C++学习之引用 C++的引用是一种用于创建别名的机制,它允许我们使用一个变量的名称来引用另一个变量。引用在C++中被广泛用于函数参数传递、函数返回值和对象别名创建等场景。引用的基本语法是在变量声明时使用其中,type表示原变量的类型,refName是引用的名称,是被引用的变量。引用必须在初始化时指定初始变量,并且一旦初始化后,它将一直引用该变量。引用必须与其初始变量具有相同的类型。引用不占用额外的内存空间,它只是原变量的一个别名。对引用的操作会直接影响到原变量。引用不能被重新绑定到其他变量。 阅读详情

1.什么是引用

    引用是为对象起的另外一个名字,定义的格式为: 类型 &引用变量名 = 已定义过的变量名。例如:
int a=10;
int &b=a;   //b是a的引用

2.引用的特点

 1>一个变量可取多个别名
 2> 引用必须初始化 
 3>引用只能在初始化的时候引用一次,不能改变为再引用其他的变量。
    定义引用时,程序会把引用的它的初始值绑定在一起,一旦初始化,引用将和它的初始值对象一直绑定在一起,所以无法再引用其他变量,且必须初始化。

3.几种特殊的引用

1>引用一个引用变量
    实际上相当于给别名再次起了一个别名
2>const引用
    被const修饰的引用相当于一个常量
void Test ()
 { 
    int d1 = 4;    
    const int & d2 = d1;    
    d1 = 5;          // d1改变 d2的值也会改变。    
    //d2 = 6;        // 错误。不能给常量(不能被修改的量)赋值
}
    有且只有被const修饰的引用可以引用一个常量
void test()
{
      const int & d= 5;  // 常量具有常性,只有常引用可以引用常量
}
  被const 修饰的 int类型的引用可以引用一个double类型的数据,但是会丢失数据。如果不用const修饰,则编译器会报错。
void test()
{
      double d7 = 1.1;     
    //int& d8 = d7; //错误,d7是double类型,d8是int,d7赋值给 d8时要生成一个临时变量,也就是说d8引用的是这个带有常性的临时变量,所以不能赋值。   
      const int& d9 = d7; 
}
3>引用作为参数
    引用作为函数参数可以直接在函数内部改掉传进来的实参的值,非常方便。
    
void Swap (int& left, int& right)
 {    
     int temp = left;     
     right = left ;     
     left = temp ;
 }  //通过引用改掉了传进来的实参值
    如果不希望改掉实参的值,尽量使用常引用传参
4>引用作为返回值
    引用作为返回值时,一定要注意不能返回临时变量的引用。临时变量的引用在返回时,系统会将临时变量的地址放到寄存器中(感兴趣为什么是这样的话可以尝试看一下对应的汇编代码),所以相当于返回了临时变量的地址,如果那块空间没有被占用的话结果是对的,但这只是一种侥幸正确的情况,一旦空间被占用,结果将变成一个随机值。

<span style="font-weight: normal;"><span style="font-size:10px;">#include<iostream>
using namespace std;

int& Add(int d1, int d2)  
{   
	int ret = d1 + d2;
    return ret; 
}
void main() 
{
	int a = 3, b = 4;     
    int c = Add(a, b);    
    cout << "c:" << c << endl;  //结果虽然正确,实际上已经发生了错误。
}</span></span>


总结:

    学习引用,我们会发现,它貌似和指针很相似,那么它和指针有哪些区别呢?
  1>引用只能在定义时初始化一次,之后不能改变指向其它变量(从一而终);指针变量的值可变。 
  2> 引用必须指向有效的变量,指针可以为空。
  3>sizeof指针对象和引用对象的意义不一样。sizeof引用得到的是所指向的变量的大小,而sizeof指针是对象地址的大小。 
  4> 指针和引用自增(++)自减(--)意义不一样。
  5> 相对而言,引用比指针更安全。

指针比引用更灵活,但是也更危险。


手把手教你逆向京东搜索接口:H5ST 556位参数生成与V8补环境技巧 本文深入解析了京东搜索接口中关键的H5ST 556位参数生成机制,并提供了详细的逆向实战指南。针对其复杂的反爬虫环境检测,文章重点介绍了通过链式补环境技巧,在Node.js中完整模拟浏览器环境(包括原型链检测和指纹验证)的方法,帮助开发者成功绕过防护并生成有效参数。 阅读详情

相关推荐

线性回归LinearRegression

对视频中线性回归算法的相关内容进行总结与记录 文章目录一、理论基础二、实例2.1 一元线性回归2.1.1 推导过程2.1.2 代码实现(基于numpy)2.1.3 代码实现(基于sklearn)2.2 多元线性回归2.2.1 代码实现(基于numpy)2.2.2 代码实现(基于sklearn) 一、理论基础 回归 通常是指利用某个函数,尽可能把数据样本点“串”在一起,用于描述输入变量和输出变量间的变化关系 线性回归 特点:用来把数据“串”起来的那个函数是线性的 (一元线性回归(一个自变量) &a.

邱邱邱的博客 1068

【学习QT必备的C++基础】C++引用精讲

注意,引用在定义时需要添加,在使用时不能添加,使用时添加表示取地址。如上面代码所示,第 6 行中的表示引用,第 8 行中的表示取地址。除了这两种用法,还可以表示位运算中的与运算。运行结果:47, 47最终程序输出两个 47,可见原始变量 a 的值已经被引用变量 r 所修改。如果读者不希望通过引用来修改原始的数据,那么可以在定义时添加 const 限制,形式为:也可以是:这种引用方式为常引用。

2401_85014224的博客 1151

揭秘Coze图生图隐藏玩法:用Excel批量生成100+电商主图(扣子插件进阶教程)

本文深入解析了如何利用Coze(扣子)的图像生成插件实现电商主图的批量自动化生产。通过将Excel数据源、参数化提示词模板与参考图风格相结合,构建了一套高效的企业级解决方案,能够快速为海量SKU生成风格统一的高质量图片,大幅提升电商运营效率。

theta的博客 435

C++学习笔记之引用变量

我是先学的C语言再学的C++,因此我直接接触的是和C语言不同的地方,有人说,C语言是C++的子集,相当于说,C++是C语言的扩展,C++实际读作C Plus Plus,因此我发现C++特有功能很多地方和C语言是类似,甚至就是将C语言的某些特性封装起来,我会在学习C++时记录下我的学习过程,我会持续更新这一个系列,敬请关注,另外我也会逐渐将这些程序发布到GitHub,尽管我知道这些程序没什么用,但...

Tine Aine 262

《商用密码应用与安全性评估》第四章密码应用安全性评估实施要点4.1密码应用方案设计

密码应用方案设计

qq_40442137的博客 1474

中国30米分辨率城市建成区数据集 (1972-2023年)

全国城市建成区空间分布数据(1972-2023年),利用Google Earth Engine平台,基于Landsat系列遥感影像提取了1972–2023年城市不透水面,后经过不透水面聚集密度计算方法计算了不透水面聚集密度,通过阈值划分提取了城市建成区,并设置了建成区面积阈值,去除了噪点,获取了全国城市建成区空间分布数据集。该提取能准确刻画城市形态,提取精度高,保持了建成区的完整性。数据集包括41期数据,1972年,1978年,1985-2023年逐年,分辨率为30米,有栅格和矢量两种格式。

地球资源数据云的官方博客 5825

C++学习第四课:引用与auto关键字

本篇文章在上一篇的基础上对引用做了更加细致的介绍。除引用之外,还涉及了部分auto内容

m0_74983085的博客 2135

【OpenClaw从入门到精通】第60篇:多智能体协同实战——用“龙虾”搭建你的数字员工团队(2026企业版)

2026年AI Agent企业落地的核心趋势,正从“单Agent单兵作战”转向“多智能体协同组网”。本文以全球开发者先锋大会“百虾大战”真实案例为蓝本,深度拆解OpenClaw多智能体协同的技术内核——三层解耦架构(模型层-技能层-网关层),系统搭建包含项目经理、架构师、执行者、质量把关者的4大核心Agent团队。通过三种主流协作架构对比、全链路配置代码实操、故障自愈实战演练,结合电商新品上架虚拟场景全流程演示,解决企业多Agent部署中的权限隔离、任务协同、运维自治三大核心痛点。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 770

【C++】cpp学习笔记二(存储类,引用,类&对象,重载)

C++ 存储类 存储类定义 C++ 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C++ 程序中可用的存储类: auto :声明变量时根据初始化表达式自动推断该变量的类型,函数返回值 register :用于定义存储在寄存器中而不是 RAM 中的局部变量。 static :指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁 extern :用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。 mutab

yusihe的博客 905

python基础知识补充

1. jupyter notebook 解释 2. ipython 魔法命令 3. latex in Markdown cell(在markdown里面编写数学公式) 4. jupyter notebook功能扩展:安装Nbextension 5. python解释与运行 6. 垃圾回收(计数机制与分代回收机制) 7. 名字空间与局部作用域L和全局作用域G 8. 小整数缓存区与字符驻留 9. Statement &Expression 10. 调试

weixin_43178406的博客 1万+

图神经网络实战——利用节点回归预测网络流量

在机器学习中,回归指的是对连续值的预测。通常与分类形成鲜明对比,分类的目标是找到正确的类别(即离散值,而非连续值)。在图数据中,分类和回归分别对应于节点分类和节点回归。在本节中,我们将尝试预测每个节点的连续值,而非分类变量。

盼小辉丶的博客 1万+

九.C++ 对引用&的学习

本文详细介绍了C++中引用的基本概念与const引用的特性。引用作为变量的别名,必须初始化且不能更换对象,所有操作都作用于目标内存。通过代码示例展示了引用赋值对目标变量的影响。重点解析了const引用:它是只读的,可绑定const/non-const对象,能延长临时对象生命周期,常用于函数参数避免拷贝。文章比较了普通引用与const引用的区别,指出const引用在安全性方面的优势,并强调其不能用于移动语义。最后给出了最佳实践建议:优先用const引用传递大对象,注意返回引用的生命周期,合理选择值传递或引用传

wydaicls的博客 1214

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【C++学习】引用与指针

C++学习笔记,引用与指针

whb78952的博客 593

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C++学习笔记——指针与引用(一)

C++学习笔记——指针与引用(一)

weixin_42923076的博客 287

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C++ primer plus学习笔记(二)——类、左值引用、右值引用、万能引用

C++也是支持面向对象的语言,也有类的概念。与java差异比较大的是,没有gc(垃圾回收器),所以设计要考虑好释放,不过也提供了智能指针(自动计数引用,自动释放)。 代码风格 前面去了解vector的源码,发现大部分头文件都会使用这种方式来避免被重复导入代码 #ifndef XXX_H #define XXX_H 1 code... #endif 一般头文件都会这样用文件名做一个宏定义的预处理,...

weixin_44627989的博客 959

C++学习——引用详解

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。

主要记录嵌入式学习与开发过程。 7271

C++中的引用处理_c++引用地址消失了会有问题吗(1),零基础学习Golang编程

经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

2401_84240554的博客 525

c++ 学习之 引用

c++ 学习之 引用 前言 当我们需要在函数内部对外部变量进行改变值操作时,必须要传递实参。我们最常见的作法就是传递一个指向该变量地址的指针,但是指针操作,往往让很多小伙伴很头疼,那么接下来给大家介绍一下可以实现同样功能而且更加方便的的操作 引用。 正文 什么是引用 引用变量是一个变量的别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指...

weixin_45074185的博客 345

C++学习笔记之引用(基础)

引用变量是一个,它是一旦把引用初始化为某个变量,可以。

韵律咖啡馆 493

C++11 引用、右值引用、移动语义学习笔记

C++11 中的引用、左值右值、移动语义等基础概念介绍

Vallelonga的博客 602

【C++学习————引用】

什么是引用概念:引用是为已存在的变量取了一个别名,引用和引用的变量共用同一块内存空间引用的格式:类型& 引用变量名(对象名) = 引用实体;ra为a的引用int a = 10;int& x = a;int b = 20;p = &b;//p的地址由a变成了b的地址x = b;

2302_76390850的博客 1436

C++学习 九、引用

C++学习 九、引用前言引用变量创建引用变量引用的本质函数与引用引用参数返回引用左值,右值,左值引用,右值引用左值lvalue与右值rvalue左值引用右值引用后记 前言 本篇继续C++学习记录,引用。 引用变量 引用是C++与C的一大扩展。引用变量是已定义变量的别名。 创建引用变量 与其它变量不同,引用变量必须在声明的同时初始化,通过&标识,如下所示: int a; int& aa = a; 此时,&不再表示取地址,int&表示整型引用。 变量a与引用变量aa的值和地址是

qq_41035283的博客 835

C++学习笔记(十五)——引用

引用(Reference)是 C++ 中的一种变量别名机制,它允许一个变量拥有多个名称。 引用提供了一种安全、简洁的方式来访问变量,而无需使用指针。 特点: 引用本质上是变量的别名,必须在定义时初始化。 引用和原变量共享同一内存地址,对引用的修改直接作用于原变量。 不能更改引用的绑定对象,引用一旦绑定,就不能重新指向其他变量。

weixin_45857378的博客 518

C++ 引用学习总结

引用(Reference)是C++中的一个重要特性,它是已存在变量的另一个名字。引用提供了对变量的间接访问方式,类似于指针,但比指针更安全、更直观。// ref是i的别名引用是C++中强大而安全的特性,它:提供了变量的别名必须初始化且不能重绑定常用于函数参数传递和返回值比指针更安全,语法更简洁。

m0_73581119的博客 330

C++学习笔记:引用

引用是已知变量的别名,通过将引用变量用作参数,函数将使用原始数据而不是其副本。就像char*是指向char的指针一样,int&是指向int的引用。(a和r指向相同的值和内存单元)必须在声明引用时将其初始化,而不能像指针那样先声明再赋值。2.引用更接近const指针,一旦与某个变量关联起来便有一直效忠于它。

2401_86107325的博客 384

[今日学习]C++之C++的引用

C++引用是变量的安全别名,必须在声明时初始化且不可更改绑定。相比指针,引用具有更严格的编译时检查、不可变性和类型安全性,底层通常通过指针实现但更高效。适用场景包括函数参数传递和返回值优化,而指针更适合处理空值或动态内存。引用直接操作原变量且不占额外内存,常见用途包括避免拷贝开销、实现函数返回值优化等。C++11引入右值引用支持移动语义。合理使用引用能提升代码效率和可读性,减少指针的复杂性风险。

2301_80246079的博客 1016
上一篇: 【C++】命名空间
下一篇: 【C语言】模拟实现strstr
pointer_y
博客等级 码龄11年 157粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值