C++——引用

C++出现了新的概念:引用。引用是某个对象的别名。

语法格式如下:

        类型&引用名=变量名;

#include <iostream>using namespace std;int main(int argc, const char *argv[])
{int i = 100;int &ir = i;//给变量i起了个别名 叫ircout << "i = " << i << endl;cout << "ir = " << ir << endl;cout << "i的地址:" << &i << endl;cout << "ir的地址:" << &ir << endl;//输出内容,地址相同return 0;
}

引用应用

#include <iostream>
using namespace std;void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}void swap1(int &a, int &b) {int temp;temp = a;a = b;b = temp;
}int main(int argc, const char *argv[])
{int x = 10;int y = 20;swap(&x,&y);swap1(x,y);cout << "x=" << x << " "<< "y=" << y << endl;return 0;
}

引用和被引用者是同一块地址

已用用途

  1. 简化编程,用指针的场景可以用引用替换(尽量减少指针的使用)
  2. 系统开销更小

使用引用需要注意以下几个问题

&的位置是灵活的,以下几种定义完全相同

int& ir = i;
int & ir = i;
int &ir = i;

在变量声明时出现&才是引用运算符(包括函数参数声明和函数返回类型的声明)

int &ri = i;
int &f(int &i1,int &);

引用必须定义时初始化

float f;
float &r1 = q;
float &r2;
r2 = f;//错误

const 引用(常引用)。在定义引用时一般为左值(变量)

左值:是指变量对应的那块内存区域,是可以放在复制符号左边的值;

右值:是指变量对应的内存区域中储存的数据值,是可以放在复制符号右边的值

常量、表达式都是右值,例如

int i =1;
i = i + 10;
i + 10 = i;//错误
i = 10;
10 = i;//错误

可以使用const进行限制,使他成为不允许被修改的常量引用(也叫万能引用)

int &i = 100;//errno
const int &i = 100;//ok的
char &c = a;//错误,将c转换char 类型,转换结果保存到临时变量中,实际引用临时变量,而临时变量是右值

引用的本质

引用的本质就是指针常量。

//int *const x = &m;int *const y = &n;
void swap(int &x,int &y) {int tmp = 0;tmp = x; //tmp = *x;x = y; //*x = *y;y = tmp;// *y = tmp;
}int main(void) {int m = 10,n = 20;swap(m,n);return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐一个界面设计软件aardio,配合python三分钟制作一个小软件。【批量doc文件转docx文件】

文章目录 前言一、aardio软件代码二、python代码总结 前言 aardio这个软件不多说&#xff0c;好用方便。 一、aardio软件代码 import win.ui; /*DSG{{*/ mainForm win.form(text"批量doc文件转docx文件";right623;bottom171) mainForm.add( button{cls"butto…

DataFunSummit:2023年数据科学在线峰会-核心PPT资料下载

一、峰会简介 数据会说谎&#xff1f;如何正确的挖掘并使用数据&#xff1f;前沿的科学实验如何做&#xff1f;实验又是如何欺骗你的&#xff1f;数据中台如何发挥功效&#xff1f;用户增长有捷径吗&#xff1f;数据科学的最佳实践有哪些&#xff1f; 本次峰会共包含了&#…

人工智能与数据分析:新时代的趋势和机会

目录 写在开头1. 融合AI和数据分析的趋势1.1 趋势变化1.2 数据驱动目标转换 2 对数据分析行业的影响2.1 技能需求2.2 工作流程和角色的变化2.3 创新和业务驱动的数据分析 3.场景变化3.1 场景1&#xff1a;智能决策支持系统3.1.1 智能决策支持系统的架构设计3.1.2 Python代码演示…

RocketMQ —消费重试

消费者出现异常&#xff0c;消费某条消息失败时&#xff0c; Apache RocketMQ 会根据消费重试策略重新投递该消息进行故障恢复。本文介绍消费重试机制的原理、版本兼容性和使用建议。 一、应用场景​ Apache RocketMQ 的消费重试主要解决的是业务处理逻辑失败导致的消费完整性…

windows的cmd命令常用的20个。

dir&#xff1a; dir&#xff1a;列出当前目录中的所有文件和文件夹。dir /p&#xff1a;逐页显示当前目录中的文件和文件夹。dir /s&#xff1a;递归地列出当前目录及其子目录中的文件和文件夹。 cd&#xff1a; cd C:\&#xff1a;切换到 C 盘根目录。cd Documents&#xff…

计算机系统基础-汇编指令学习

1.1 传送指令 push %ebpmov %esp,%ebpand $0xfffffff0,%esp //边界对齐指令&#xff0c;16字节对齐sub $0x20,%espmovl $0xa,0x10(%esp) //立即数10赋值给偏移量为0x10的基址寄存器espmovl $0x9,0x14(%esp) //立即数9赋值mov 0x10(%esp),%eax mov %eax,0x18(%esp) //立即数10赋…

DICOM 文件中,VR,VL,SQ,图像二进制的几个注意点

DICOM 文件的结构&#xff0c;在网上有很多的学习资料&#xff0c;这里只介绍些容易混淆的概念&#xff0c;作为回看笔记。 1. 传输语法 每个传输语法&#xff0c;起都是表达的三个概念&#xff1a;大小端、显隐式、压缩算法 DICOM Implicit VR Little Endian: 1.2.840.1000…

解决VSCode打开终端Terminal闪退的问题

一、背景 在新电脑上使用了VSCode&#xff0c;但是一打开Terminal&#xff0c;Terminal马上就消失了&#xff0c;在网上找了很久&#xff0c;都没有找到对应的分析 二、解决思路 首先&#xff0c;是从这个文档中找到了灵感&#xff0c;这个文档里面汇集了大部分的问题&#…

孩子都能学会的FPGA:第三十二课——用FPGA实现一个通用的SPI主机发送模块

&#xff08;原创声明&#xff1a;该文是作者的原创&#xff0c;面向对象是FPGA入门者&#xff0c;后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门&#xff0c;作者不光让大家知其然&#xff0c;还要让大家知其所以然&#xff01;每个工程作者都搭建了全自动化的仿…

二百一十五、Flume——Flume拓扑结构之复制和多路复用的开发案例(亲测,附截图)

一、目的 对于Flume的复制和多路复用拓扑结构&#xff0c;进行一个小的开发测试 二、复制和多路复用拓扑结构 &#xff08;一&#xff09;结构含义 Flume 支持将事件流向一个或者多个目的地。 &#xff08;二&#xff09;结构特征 这种模式可以将相同数据复制到多个channe…

使用python向neo4j中批量导入txt和csv三元组数据

1.导入txt文件 数据示例&#xff1a; &#xff08;头实体&#xff0c;关系&#xff0c;尾实体&#xff09; &#xff08;头实体&#xff0c;关系&#xff0c;尾实体&#xff09; 。。。。。。在执行python代码之前在neo4j中执行这个命令&#xff0c;清空所有节点 match (n) d…

微信生态下的私域流量载体有哪些?

私域流量的本质就是&#xff1a;降低我的获客成本&#xff0c;提高我产品服务的复购率&#xff0c;增加我和用户之间的粘性&#xff0c;挖掘用户的终身价值。 私域流量一般我们特指微信体系的个人号、公众号、社群和小程序&#xff0c;现在朋友圈和视频号也成为了打造微信私域…

HubSpot和AI的完美结合:解锁业务增长密码

随着数字化时代的发展&#xff0c;智能营销已经成为企业走向成功的关键之一。在这个领域的领先者之一&#xff0c;HubSpot积极整合人工智能&#xff08;AI&#xff09;技术&#xff0c;为数字营销、销售和服务带来了新的可能性。今天运营坛将带领大家深入探讨HubSpot和人工智能…

活动预告 | 微盟技术沙龙 - Elasticsearch 在微盟的实践 12/21/2023

微盟技术沙龙 「微盟技术沙龙」是由微盟研发中心发起并联合各方小伙伴为开发者举办的系列技术沙龙&#xff0c;从用户&#xff0c;产品&#xff0c;技术等方面与开发者进行交流。 微盟技术沙龙关注开发者在实际应用中遇到的问题。提供最真实的干货&#xff0c;以技术会友&…

GPU 性能测试软件:GPU-Z,2023 年 9 月 12 日更新

GPU-Z是一款用于Windows操作系统的免费工具&#xff0c;它用于查看和监控计算机的图形处理单元&#xff08;GPU&#xff09;信息。这个工具是专为计算机硬件爱好者、游戏玩家、系统管理员和技术支持人员设计的 GPU-Z 的特点 GPU信息&#xff1a;GPU-Z能够显示关于您计算机中G…

命令执行 [BUUCTF 2018]Online Tool1

打开题目 我们代码审计一下 if (isset($_SERVER[HTTP_X_FORWARDED_FOR])) { $_SERVER[REMOTE_ADDR] $_SERVER[HTTP_X_FORWARDED_FOR]; } 如果存在xxf头且不为空&#xff0c;则将xxf头内容&#xff08;真实的客户端ip&#xff09;赋给ROMOTE_ADDR&#xff08;代理服务器传过…

如何使用蜘蛛池蚂蚁SEO

​蜘蛛池是一种利用搜索引擎爬虫进行推广营销的方式。它的核心是建立一个能够吸引搜索引擎爬虫的网站群&#xff0c;这些网站能够产生大量的优质内容&#xff0c;并形成一个巨大的网站群&#xff0c;从而吸引更多的搜索引擎爬虫。 如何联系蚂蚁seo&#xff1f; baidu搜索&…

【C语言(十二)】

数据在内存中的存储 一、整数在内存中的存储 整数的2进制表示方法有三种&#xff0c;即 原码、反码和补码 有符号的整数&#xff0c;三种表示方法均有符号位和数值位两部分&#xff0c;符号位都是用0表示“正”&#xff0c;用1表示“负”&#xff0c;最高位的⼀位是被当做符号…

赠与婚外情人1百余万,主张全额返还获支持

丈夫婚内出轨&#xff0c;并瞒着妻子给情人转账177万余元&#xff0c;最终被妻子发现诉至法院。近日&#xff0c;湖南省湘阴县人民法院审理了一起不当得利案件&#xff0c;认定丈夫的赠与行为无效&#xff0c;支持了妻子全额返还的诉讼请求。   男子钱某与女子赵某于2020年6月…