C++ 引用

C++引用 类型 &引用名 = 引用实体(变量名);。引用在定义时必须进行初始化,并且一旦初始化后,就会一直引用该变量,不能再引用其他变量。// 定义一个引用 ref,它是 num 的别名// 通过引用修改原始变量的值ref = 20;return 0;在上述代码中,ref是num的引用,对ref的操作实际上就是对num的操作。注意引用类型必须和引用实体是同种类型的。对于基本数据类型(如intdouble等),传值和传引用的效率差异通常不大。 阅读详情

引用

引用概念

引用不是定义一个新的变量,而是给已存在的变量取了一个别名,编译器不会为引用变量开辟一个新的空间,它和它引用的变量共用一块空间。

int main()
{
   int i = 10;
   int& b = i; //使用了& b成为了i的别名
   //而&放在 int& 为引用 &在变量旁边为取地址
   int& c = b;
   return 0;
}

在这里插入图片描述
在这里插入图片描述

引用的作用

对比c语言调用函数 形参的改变不影响实参 需要传指针解引用;
而引用是变量的别名,形参的改变就是实参的改变;

void swap(int* x, int* y) //c
{
	int* tmp = x;
	x = y;
	y = tmp;
}
int main()
{
	int i = 10, j = 20;
	swap(&i, &j);//取地址
	cout << i << endl;
	cout << j << endl;
	return 0;
}
void swap(int& x, int& y) //c++
{
	int tmp = x;
	x = y;
	y = tmp;
}
int main()
{
	int i = 10, j = 20;
	swap(i, j);
	cout << i << endl;
	cout << j << endl;
	return 0;
}
引用做返回值
int Count()
{
	int n = 0; 
	n++;
	return n;
}

int main()
{
	int ret = Count();

	return 0;
}

Count函数调用后,返回n,出栈后销毁,n会在main空间临时开辟一个空间,将临时变量给ret;
在这里插入图片描述
在这里插入图片描述
如果给n加上static呢?

int Count()
{
	static int n = 0; 
	n++;
	return n;
}

在这里插入图片描述
n在静态区,但是不管销不销毁,依然会产生一个临时变量;
在这里插入图片描述

传引用返回
int& Count()
{
	static int n = 0;
	n++;
	return n;
}

int main()
{
	int ret = Count();

	return 0;
}

在这里插入图片描述
传引用返回,n就是ret的别名;引用返回可以减少拷贝;
如果函数返回时,出了函数作用域,如果返回对象还在(没有返还系统,如静态,全局,上层栈帧,malloc等等),则可以使用引用返回。如果已经还给系统,则必须使用传值返回;

指针和引用的区别

引用的概念上时定义一个变量的别名,指针时储存一个变量的地址;
在汇编中其实是一样的:
在这里插入图片描述
引用在定义时必须初始化,指针则没有要求;
引用在初始化一个实体后,不可以再引用其他实体,指针可以在任何时候指向任何一个同类型的实体;
没有NULL的引用,但是有NULL的指针;
引用的的大小为引用类型的大小决定,而指针始终为4/8字节;
引用自加1则引用的实体增加1,指针自加即指针向后偏移一个类型的大小;
有多级指针,没有多级引用;
访问实体方式不同,指针需要显式解引用,而引用时编译器自己处理;
引用比指针使用更加安全;

Cpp 11 / 万能引用、引用折叠和完美转发 一、万能引用 1、英文:Universal Reference 。 2、诞生的原因 因为 C++ 中存在左值引用和右值引用,导致若想同时实现既可传入左值又可传入右值的功能,需要对相同函数进行重载,导致代码冗余。 3、解决办法 为了解决上述问题,就诞生了万能引用,具体用法如下: template<typename T> void func(T&& param) { ; } 主要实现方法是依靠 C++ 强大的模板推导能力,在编译期间确定 param 是左值. 阅读详情

相关推荐

10-142 6-4 查询厂商“D“生产的PC和便携式电脑的平均价格

分数 10全屏浏览题目切换布局作者 lhm单位 河北农业大学本题目要求编写SQL语句,查询厂商D生产的PC和便携式电脑的平均价格。

dqd66的博客 2748

【c++】cpp之引用

c++中引用知识点

hutaotaotao的博客 1328

Halcon手眼标定实战:九点标定法从入门到精通(附完整代码)

本文详细介绍了Halcon环境下九点标定法的完整实现流程,从基础概念到实战技巧,帮助开发者快速掌握手眼标定技术。通过精确采集图像坐标与机械坐标,计算仿射变换矩阵,实现相机与机械臂坐标系的精确映射,适用于工业自动化中的平面定位场景。

v4w5x6的博客 411

CPP的引用

CPP的引用,欢迎点赞,互相关照。为了梦想前进。

qq_61273847的博客 1556

从UE4到Unity:双叶高光技术在角色皮肤渲染中的移植全流程

本文详细解析了将UE4中的双叶高光技术移植到Unity引擎的全流程。该技术通过模拟皮肤油脂层和真皮层的不同反射特性,能显著提升角色皮肤渲染的真实感。文章从核心原理、贴图资产处理、Shader代码重构到参数调校,提供了完整的跨引擎移植实战指南,帮助开发者实现高质量的皮肤质感还原。

alice7model的博客 478

微信终于支持“多设备同时在线”?我用 NAS + Docker 搭了一个云端微信系统,多端共享24小时在线

通过Docker 容器,将微信运行在云端并通过浏览器访问,实现多设备共享同一微信会话 📱。本文详细介绍完整部署流程、docker-compose 配置及资源控制方案,让微信变成“可访问的云桌面应用” ✨

XiaoqiangClub的博客 870

cpp——引用

引用是什么?

weixin_57525369的博客 3345

Vue - 快速入门,这一套就够了!(Vue core + 案例 + 效果演示)

前置条件:掌握 HTML、CSS、JavaScript、AJAX.工具:VsCode.插件:Live Server(浏览器实时预览)Ps:建议都提前下载下来,没网的时候也能用.

CYK_byte的博客 4万+

CPP引用

通过 const 关键字定义常量引用,必须在声明时初始化。上述代码中,10 是一个字面值常量,本身不是变量,不能直接被引用。此时,如果想要修改 a 的值,是不被允许的。会提示表达式必须是可修改的左值。a = 100;常量引用主要用来修饰形参,提高安全性,防止形参改变实参。如下代码,向 test () 函数传入实参变量 a,test () 函数执行之后,输出 a 的值是 100。也就是说函数执行完成后,会对外部的变量 a 产生影响。int a = 10;这里ref是对a的常量引用。

qq_59805046的博客 839

Qt垂直滚动条QVerticalScrollBar详解:从基础到实战的控件开发指南

本文系统解析Qt中QVerticalScrollBar的用法,从基础概念到进阶技巧。主要内容包括:1)基础认知:介绍其继承关系、作用及典型应用场景;2)核心用法:创建方法、关键属性配置和信号槽连接;3)进阶技巧:自定义样式表美化外观,以及与自定义内容区域的联动实现;4)实战注意事项,如避免循环触发和高DPI适配等。文章强调掌握QVerticalScrollBar对提升Qt滚动类功能开发效率的重要性,并建议通过自定义文本编辑器实践巩固知识点。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 759

leaflet 综合教程170+ 【目录 】(已包含162篇文章)

vue+leaflet系列教程旨在为开发者提供简单快捷的,。在每一个示例中,解释相应的API知识点,做到。注意本示例目录中的内容可能加载是vue+openlayers的示例, 本目录是要加载vue+leaflet的示例,只是内容少,逐渐更新中。

大剑师兰特的GIS世界 1万+

引用 CPP

引用

huiohuoi的博客 1048

2026年算法工程师常见面试简答题

本文摘要:文章系统梳理了机器学习与深度学习中的30个核心概念,涵盖模型优化、评估指标、经典算法和大模型应用等关键知识点。主要内容包括:1)过拟合与欠拟合的成因及解决方法;2)偏差-方差权衡原理;3)数据划分与交叉验证策略;4)分类/回归任务评估指标选择;5)逻辑回归、决策树、SVM等传统算法解析;6)梯度下降优化与正则化技术;7)CNN、RNN、Transformer架构对比;8)Embedding表示与RAG技术。特别强调面试高频考点如XGBoost改进、注意力机制原理等,并给出实际工程中的解决方案建议,

不务正业的猿 350

cpp中对于引用的使用

C++新增了一种复合类型——引用变量。引用是已定义的变量的别名(另一个名称)。例如,如果将twain作为clement变量的引用,则可以交替使用twain和 clement 来表示该变量。那么,这种别名有何作用呢?是否能帮助那些不知道如何选择变量名的人呢?有可能,但引用变量的主要用途是用作函数的形参。通过将引用变量用作参数,函数将使用原始数据,而不是其副本。这样除指针之外,引用也为函数处理大型结构提供了一种非常方便的途径,同时对于设计类来说,引用也是必不可少的。

Lyajpunov的博客 951

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C++中引用与指针的区别_cpp 引用与指针的区别

学过C的朋友应该都知道指针,刚开始学习指针的时候,都会觉得指针很难,学完了指针才发现指针就是保存的地址。引用没有分配内存空间,所以访问函数形参就是访问引用的变量,是直接访问。而指针分配了内存空间用来保存变量的地址,需要通过保存的地址找到指向的变量,是间接访问。而指针在传参的时候,必须传变量的地址过去,否则不能改变变量的值。5、sizeof 引用得到的是所指向的变量(对象)的大小,而sizeof 指针得到的是指针本身的大小。6、引用访问一个变量是直接访问,而指针访问一个变量是间接访问。二、引用与指针的区别。

2401_87555420的博客 445

lwip-2.0.3

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

C++中在一个cpp文件中引用另外一个cpp文件的方法

创建1个func2.cpp 通过include 引入func1.cpp 来使用func1里面的方法(如果有单独的头文件,比如func1.h 可以通过#include“func1.h”)C++中在一个cpp文件中引用另外一个cpp文件 可以通过导入cpp文件或者.h文件来实现,类似python中的import 导入。

小牧在一直在学习,在前进的道路上大家一起学习,进步。 8010

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【Cpp】指针与引用

在C语言中,我们对指针的规范并不严谨——我们常常会用void*来传入一个不知道其变量类型的指针,为了兼容CCpp允许这样的语法存在,但是,由于这样的指针不具有安全性,我们无法通过来解引用void*,这就需要用到我们的显式转换。为了方便看指针的引用而不是由一堆组成了参数和参数类型,我们采用引用来让这种写法变得更加简洁;

Mongxin_Chan的博客 1121

c++中一个cpp文件中的类如何引用另一个cpp文件中的类成员变量及方法

A.cpp中引用B.cpp文件中的类BB的成员变量以及方法: 在B.cpp文件中定义一个全局指针 BB *b_ptr; 然后在A.cpp中 声明这个全局指针 extern BB *b_ptr; 就可以使用了! ...

Stephen 1万+

Cpp_引用

1.引用即别名int a = 10; int& b = a; // b引用了a,b是a的别名,b就是a,a就是b /* int b = a; */引用必须做初始化,而且一经初始化其所引用的目标就不能更换。引用对临时变量(匿名对象的作用)任何出现字面值常量、计算表达式、类型转换、函数返回值的场合,都会有临时变量(匿名变量)产生。只能用带有常属性(const)的引用引用这样的临时变量,而且一旦通过引用引

Jerry的专栏 2787

【Cpp】引用的本质

一、什么是引用 引用是C++中的一个新的语言特性,从表面来说,引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明如下: 类型标识符 &引用名 = 目标变量名; 这里面的&不是位运算、不是取地址,而是一个引用的标识符,可以认为是一个“类型标识符 &”类型,类型标识符是指目标变量的类型。如: int a = 10; int &b = ...

baymaxly的博客 843

Cpp中的各种引用

引用不能引用数组 引用大小测试 class MyClass { char & a; cha

weixin_43572257的博客 1366

[cpp][引用][重点][cpp初阶][一][8]详细讲解

const引用是指对常量的引用。在C++中,使用const关键字来修饰引用,它可以引用一个常量对象 or 一个不能被修改的对象主要用于函数参数传递和保护数据不被意外修改。

2301_80443197的博客 845

cpp引用

cpp引用的小笔记

wjcyaya的博客 382

cpp类的引用

引用 引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。引用(reference)是c++对c语言的重要扩充。 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方法:类型标识符 &引用名=目标变量名;   引用说明:   (1)&在此不是求地址运算,而是起标识作用。   (2)类型标识符是指目标变量的类型。   (3)声明引用时,必须同时对其进行初始化。   (4)引用声明完毕后,相当于目标变量名有两个名称,即该目

weixin_54025765的博客 746

Cpp::C++11右值引用与移动构造(30)

继续!正文开始!暂时就到这里吧,因为笔者写到这里的时候下课了!总之!1.左值引用:直接引用对象以减少拷贝2.右值引用:间接减少拷贝,将 临时资源 等 将亡值 的资源通过移动构造进行转移,减少拷贝。

tan180°的博客 1036

【C++】引用

【C++】引用

weixin_60478154的博客 2238
上一篇: Linux的Git使用
下一篇: 【C++ 内联函数】
sid_Tang
博客等级 码龄4年 115粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值