C++ -- 引用

news/2025/3/11 9:09:54/文章来源:https://www.cnblogs.com/Mr-DC/p/18237005

什么是引用?

引用其实就是一个变量的别名。也就是说,你可以通过引用的名称去访问原来的那个变量。
其操作符很简单,就是在变量前面加上&。
一个很简单的例子:

    //variableint i;//reference variablesint& r=i;i=5;cout<<"value of i is:"<<i<<endl;cout<<"value of i reference:"<<r<<endl;r=6;cout<<"value of i is:"<<i<<endl;cout<<"value of i reference:"<<r<<endl;

输出:

给整型变量i定义一个引用变量r,就相当于给变量i起了另外一个名字,那么通过变量r也可以访问到变量的值。所以第一次赋值给i后,通过r访问得到的值仍是i;而第二次通过r赋值,也是一样的,实际上是对i变量的值进行改变,不过是换了一个名称
result

为什么使用引用?

  1. 作为参数传递给函数,这样可以直接改变外部变量的值。
    我们定义一个简单的+1的函数,分别以引用变量以及普通变量作为参数:
void add(int& i)
{i++;
}void add_2(int i)
{i++;
}

再分别以i作为参数调用函数:

i=5;
add(i);
add_2(i);

结果很容易知道,第一个add对i加了1,而第二个函数并没有实际改变i的值。

  1. 提高效率
    • 避免复制:如果将大型的对象作为函数参数进行传递时,如果按值传递,则会创建一个对象的副本;而使用引用则是直接使用原对象,时间和空间的开销都更小
    • 返回引用可以避免返回值的临时对象的创建
  2. 常量引用允许函数接受输入而不需要担心修改输入的数据,增强程序的安全性
void test(const int& i)
{i++;
}

这样一个函数会报错,因为i是不可以改变的

总结

  1. 引用是变量的另一个名字,我们可以通过这个名字去访问它
  2. 使用引用可以节省空间和时间
  3. 在需要对外部变量进行修改使用引用变量

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

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

相关文章

YOLOv8-PyQT5可视化界面

使用PyQT5实现YOLOv8图形化界面 准备工作: 1、首先在YOLOv8环境中安装pyqt5 pip install pyqt5 pip install pyqt5-tools然后再你的anaconda环境中找到designer.exe文件,双击运行,可以将其发送到桌面快捷方式方便后续使用 下面是我的文件所在路径地址,根据自己环境的位置进…

苹果电脑显示一个问号该如何解决—成功案例

这样的数据恢复用户可以自己完成吗? 今天我们来看一个案例,一台A1465的苹果电脑,开机时显示一个问号,系统是进不了的。客户的描述是:机器出了问题以后,去苹果售后维修站做过一些检测,对方告诉他可能是硬盘坏了,但是因为苹果官方不提供数据恢复救援工作。苹果电脑的硬盘…

HBuilder解决:Error: error:0308010C:digital envelope routines::unsupported

操作系统是 win10,HbuilderX 版本 4.18,已安装了 nvm,尝试按照网上说的切换到 node v16 或者 node v12 版本,或者在命令行先运行环境参数命令,再次在 HbuilderX 运行小程序或者发布小程序,HBuilderX 仍然反复提示错误 Error: error:0308010C:digital envelope routines::…

统计 | 思维导图

统计 | 思维导图,适合2019 人教A版教材前言 使用方法:如果想得到更好的显示效果,可以点击全屏按钮,已经实现电脑端、手机端的适配,效果很好;电视端没有实现适配,Ipad端的适配没有测试; 思维导图全屏

OCA/base_report_to_printer 配置Odoo云打印

系统结构安装部署 Odoo 安装模块依赖pip install pycups 安装OCA模块report-print-send/base_report_to_printer cups cups简介 CUPS(Common UNIX Printing System)是一个开源的打印系统,用于在 Unix-like 操作系统上管理打印任务。它提供了打印机驱动程序、打印队列管理、打…

2024 Web 新特性 - 使用 Popover API 创建弹窗

Popover API 为开发者提供了一种声明式的方式来创建各种类型的弹窗。目前已在所有三大浏览器引擎中可用,并正式成为 Baseline 2024 的一部分。Popover API 为开发者提供了一种声明式的方式来创建各种类型的弹窗。目前已在所有三大浏览器引擎中可用,并正式成为 Baseline 2024 …

ubuntu 16.8升级nodejs

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash - $node --version v16.20.2

lodash已死?radash库方法介绍及源码解析 —— 判断方法篇

目前为止,radash库的所有方法我们已经分享完毕。如果你想尝试使用,又或者想了解下源码,阿瓜的文章都值得一读,相信你总能有所收获。后续我们回整理一份使用说明进行发布。前言 大家好,我是阿瓜。一个励志分享更多技术的前端瓜 ~ 我们已经分享了 radash 库中数组、对象等相…

PyCharm的安装

PyCharm的安装 PyCharm是一款由JetBrains公司开发的强大的Python集成开发环境(IDE),它提供了代码分析、图形化调试器、集成单元测试、版本控制等功能,极大地提高了Python开发者的工作效率。以下是PyCharm社区版的详细安装步骤。 一、下载PyCharm安装包 首先,我们需要访问P…

allure安装配置使用 简单版

环境安装 一、安装配置JDK 先检查是否安装JDK,cmd中查看java版本:java -version若未安装,以下面的步骤安装: 1、Oracle官网下载JDK:https://www.oracle.com/java/technologies/downloads/,请下载安装JDK8及以上版本 2、安装JDK 3、JDK配置环境变量:win10系统右击“我的电…

dubbo~全局异常拦截器的使用与设计缺陷

异常拦截器ExceptionMapper 在JAX-RS(Java API for RESTful Web Services)中,ExceptionMapper接口用于将Java异常映射到HTTP响应。通过实现ExceptionMapper接口,你可以自定义如何处理特定类型的异常,并生成相应的HTTP响应。 优先级和选择 当有多个ExceptionMapper可用于处…

RPC--远程过程调用协议

简单介绍一下RPC什么是RPC? RPC的全称是:Remote Procedure Call,远程过程调用。它的作用就是允许一台机器上的程序去调用另一台机器上的程序,而不会意识到这个过程是远程的,也就是程序员不需要知道网络通信中的任何细节。 为什么要使用RPC?提高开发效率:程序员不需要再关…