首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >迟来的函数传参补充——传引用【引用调用】【c++】

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

作者头像
来杯Sherry
发布2023-06-18 16:42:06
发布2023-06-18 16:42:06
50100
代码可运行
举报
文章被收录于专栏:第一专栏第一专栏
运行总次数:0
代码可运行

1、传引用

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

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

1.1、特点

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

1.2、使用

1.2.1、一般引用

代码语言:javascript
代码运行次数:0
运行
复制
void f(int &a,int &b){
	//...
}


f(a,b);

函数声明:

代码语言:javascript
代码运行次数:0
运行
复制
void f(int &,int &);

1.2.2、常量引用

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

代码语言:javascript
代码运行次数:0
运行
复制
void showResult(const int &res){
	cout<<res<<endl;
}


showResult(res);

函数声明:

代码语言:javascript
代码运行次数:0
运行
复制
void showResult(const int &);

1.3、案例

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

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

代码语言:javascript
代码运行次数:0
运行
复制
#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、结构体引用做函数参数

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、传引用
    • 1.1、特点
    • 1.2、使用
      • 1.2.1、一般引用
      • 1.2.2、常量引用
    • 1.3、案例
      • 1.3.1、常见变量引用做函数参数
      • 1.3.2、结构体引用做函数参数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档