迟来的函数传参补充——传引用【引用调用】【c++】

news2024/12/20 17:13:45

文章目录

  • 1、传引用
    • 1.1、特点
    • 1.2、使用
      • 1.2.1、一般引用
      • 1.2.2、常量引用
    • 1.3、案例
      • 1.3.1、常见变量引用做函数参数
      • 1.3.2、结构体引用做函数参数

1、传引用

函数传参,几乎一直在用简单的值传递,或者传指针,前者生成一个源结构的副本,后者链表或者树的时候用的比较多,本文补充到一个类似值传递的函数调用方式,函数定义的传参位置却是地址接收方式,这就是传引用

其实早就在王道见过,只是没注意其中的奥妙,怪就怪我线性表题目爱用数组解决,栈和队列喜欢用结构体内置函数的方式实现,完全用不到引用。

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

1.1、特点

  • 仅从代码书写来看,整体上只有函数定义参数的这一个位置有所不同。
  • 相比值传递,几乎无传参时间开销(传大型结构体、长字符串尤为明显)

1.2、使用

1.2.1、一般引用

void f(int &a,int &b){
	//...
}


f(a,b);

函数声明:

void f(int &,int &);

1.2.2、常量引用

稍微讲究一点的用法,往往是定义一个输出函数的传入参数设为常引用,意味着无更改要求。

void showResult(const int &res){
	cout<<res<<endl;
}


showResult(res);

函数声明:

void showResult(const int &);

1.3、案例

1.3.1、常见变量引用做函数参数

比如实现一个交换两个变量的值,过去确实只会值传递,像是涉及到改变值的操作,都会下意识的去写在main函数中,将结果在传给下一个需要相关值的函数。有了引用,main函数会变得更加简洁。

#include<iostream>
#include<cstring>
#include<algorithm>
#include<stack>
using namespace std;


void swap(int &x,int &y){
	int t;
	t =x;
	x=y;
	y=t;
}

int main(void){
	int a = 1, b =2;
	swap(a,b);
	cout<<"a: "<<a<<" b: "<<b<<endl;
}

1.3.2、结构体引用做函数参数

除非参数结构很小,否则一般会通过引用将结构体传递给函数。

在这里插入图片描述

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

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

相关文章

知识点滴 - 食物的寒热之分

昨晚多吃了写菠萝蜜&#xff0c;结果第二天就流鼻血了。以前吃晒干的龙眼&#xff0c;也流过鼻血。看来某些水果一次性吃太多&#xff0c;会有问题。 那就来研究研究水果的属性&#xff0c;识别哪些水果吃多了上火&#xff0c;哪些说过吃多了受寒。 中医认为&#xff0c;所有的…

sharding5.0.0分表分库

sharding官网参考 https://shardingsphere.apache.org/document/current/cn/overview/ https://shardingsphere.apache.org/document/legacy/4.x/document/cn/features/sharding/use-norms/pagination/ https://shardingsphere.apache.org/document/legacy/4.x/document/cn/d…

Hector SLAM Scan Matching 理解

Hector SLAM 参考https://www.cnblogs.com/cyberniklee/p/8484104.html 搞清楚几个点有助于对scan matching的理解 占用栅格地图中每个地图点包括点坐标、占用值最大为1&#xff0c;表示该栅格被占用的概率、以及占用值对坐标的梯度&#xff0c;由于地图点是离散的&#xff…

HashMap底层实现

首先来看一下put方法的源码&#xff0c;在HashMap中最重要的就是put方法的执行逻辑以及一些控制参数的意义比较重要。 【put方法】 问题1&#xff1a;如何计算数组位置&#xff1f; 答案&#xff1a; 1、首先在插入<K &#xff0c;V> 时&#xff0c;会先将其包装成一…

商城系统是如何分账的?-加速度shopfa

微信小程序凭借着其方便快捷&#xff0c;无需下载且依附于微信这个庞大的社交平台等特点&#xff0c;让无数的企业商家都为之痴迷&#xff0c;并都纷纷投入到了小程序的搭建工作&#xff0c;但你知道吗&#xff0c;通过小程序进行交易&#xff0c;资金的结算是十分复杂的&#…

使用单元测试框架unittest进行有效测试

一、介绍 在软件开发中&#xff0c;单元测试是一种测试方法&#xff0c;它用于检查单个软件组件&#xff08;例如函数或方法&#xff09;的正确性。Python 提供了一个内置的单元测试库&#xff0c;名为 unittest&#xff0c;可以用来编写测试代码&#xff0c;然后运行测试&…

基于Java图书管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

springboot+vue漫画网站(java项目源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的漫画网站。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&#…

Elasticsearch:实用 BM25 - 第 2 部分:BM25 算法及其变量

BM25算法 我将尽可能深入这里的数学以解释正在发生的事情&#xff0c;但这是我们查看 BM25 公式的结构以深入了解正在发生的事情的部分。 首先我们来看看公式&#xff0c;然后我将把每个组件分解成可以理解的部分&#xff1a; 我们可以看到一些常见的组件&#xff0c;如 qi、I…

第二期丨INTERSPEECH 2023 论文预讲会

INTERSPEECH 2023 论文预讲会是由CCF语音对话与听觉专委会、语音之家主办&#xff0c;旨在为学者们提供更多的交流机会&#xff0c;更方便、快捷地了解领域前沿。活动将邀请 INTERSPEECH 2023 录用论文的作者进行报告交流。 INTERSPEECH 2023 论文预讲会第二期邀请到华南理工大…

无线耳机什么牌子的好?质量好性价比高 ?八款蓝牙耳机分享

随着TWS技术在应用层面的日益完善&#xff0c;真无线蓝牙耳机就越来越受欢迎了&#xff0c;完全摒弃了线材的束缚&#xff0c;做到了真正的无线耳机&#xff0c;这简直是无法忍受耳机线的强迫症的福音&#xff0c;而且现在不仅是佩戴时会格外的舒适&#xff0c;随着无线技术的不…

【面试题必问】浏览器是如何实现生成HTTP消息的

我们经常会使用浏览器访问各种网站&#xff0c;获取各种信息&#xff0c;帮助解决工作生活中的问题。那你知道&#xff0c;浏览器是怎么帮助我们实现对web服务器的访问&#xff0c;并返回给我们想要的信息吗&#xff1f; 1. 浏览器生成HTTP消息 我们平时使用的浏览器有很多种&…

图解LeetCode——437. 路径总和 III

一、题目 给定一个二叉树的根节点 root &#xff0c;和一个整数 targetSum &#xff0c;求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始&#xff0c;也不需要在叶子节点结束&#xff0c;但是路径方向必须是向下的&#xff08;只能从父节点到…

AI智能视频技术在安防监控领域的场景应用

AI智能视频技术是一种基于人工智能、深度学习和计算机视觉等技术的视频处理技术。它可以通过对视频进行分析和识别&#xff0c;实现各种智能化应用&#xff0c;如视频监控、智能家居、自动驾驶等。 目前&#xff0c;AI智能视频技术已经实现了人脸识别、行为分析、智能跟踪、场…

测试用例excel转word(Office word篇)

场景 我们在项目中&#xff0c;默认情况下是用我们的Excel用例模版输出测试用例。但是有的项目中&#xff0c;会要求在Word版本的测试计划或者测试报告中&#xff0c;写明测试用例。而我们的测试用例&#xff0c;有的项目有上千条&#xff0c;这个时候如果从Excel往Word中复制…

【支付宝小程序】医保接入文档网址

【支付宝小程序】医保接入文档 自己注意事项&#xff1a; 授权 my.getAuthCode跳转与参数 处理 my.ap.navigateToAlipayPage联调 测试开发者加入 白名单

【前端播放器】修改前端参数,减少时延

目录 程序修改 海康 CM8 换上新的jessibuca-3 好像提高到了1S内 与2.8的旧版本比下 191-196-2.8三个对比 jessibuca-pro 延时测试 jessibuca-pro 300ms 超低延迟 wvp-webrtc wvp-webrtc vs vms webrtc > jessibuca-pro > jessibuca 总体 参考资料 程序修改 …

不要把异常当做业务逻辑,这性能可能你无法承受

一&#xff1a;背景 1. 讲故事 在项目中摸爬滚打几年&#xff0c;应该或多或少的见过有人把异常当做业务逻辑处理的情况(┬&#xff3f;┬)&#xff0c;比如说判断一个数字是否为整数,就想当然的用try catch包起来&#xff0c;再进行 int.Parse&#xff0c;如果抛异常就说明不…

基于Java家居商城系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

pl/sql developer oracle生僻字显示问题

一、问题由来 随着国标GB18030的推行&#xff0c;各行各业都在如火如荼的落实改造。自己在工作中也发现很多问题&#xff0c;查阅了很多资料都未解决自己的问题。经过慢慢摸索&#xff0c;对生僻字经常出现的问题进行总结&#xff0c;现分享如下。 二、问题描述 1. or…