C++ 函数参数3种传值方式(以交换两个数为例)

简介

在C++中,函数参数的传值方式有传值调用指针调用引用调用。接下来,通过一个实例来演示三者区别。

代码

#include <iostream>using namespace std;
//传值调用
void Swap(int a,int b)
{int temp=a;a=b;b=temp; 
}
//指针调用
void Swap2(int *a,int *b)
{int temp=*a;*a=*b;*b=temp; 
}
//引用调用
void Swap3(int &x,int &y)
{int temp;temp=x;x=y;y=temp; 
}
int main(int argc, char** argv){int a=10,b=20;cout<<"交换前:\ta\tb\n";cout<<"\t\t"<<a<<"\t"<<b<<endl;cout<<"交换后:\n\n";cout<<"函数形参\ta\tb\n";Swap(a,b); cout<<"int:\t\t"<<a<<"\t"<<b<<endl;Swap2(&a,&b);cout<<"int *:\t\t"<<a<<"\t"<<b<<endl;Swap3(a,b);cout<<"int &:\t\t"<<a<<"\t"<<b<<endl;return 0;
}

运行结果

在这里插入图片描述

分析

  1. 调用Swap函数,是把实际参数赋给形式参数。形参改变不影响实参,所以a=10,b=20。这属于传值调用
  2. 调用Swap2函数,形参为int类型的指针,实参为变量a和b的地址,形实结合后,形参分别指向a和b,形参的改变会改变实参的值。所以,a=20,b=10。这属于指针调用。
  3. 调用Swap3函数,形参为int类型的引用,实参为变量a和b,形实结合后,形参分别是a和b的别名。对形参的改变,同时也会改变实参。所以,a=10,b=20.这属于引用调用。
  4. 上述过程,a和b经过了两次交换。

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

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

相关文章

删除已弃用的CMS垃圾收集器的JEP草案

在2017年4月10日的文章“ Java垃圾收集器&#xff1a;G1GC何时将CMS强制退出&#xff1f; ”&#xff0c;我讨论了JEP 291 &#xff08;“弃用并发标记扫描&#xff08;CMS&#xff09;垃圾收集器”&#xff09;&#xff0c;并提供了一些赞成和反对弃用&#xff08;并最终淘汰&…

Ubuntu系统中利用Sublime分别运行Python与Python3

背景 两台Ubuntu系统的电脑均使用Sublime&#xff0c;运行相同的代码&#xff0c;出现不同的效果。 经观察&#xff0c;一个Sublime python F5 编译采用的为python3&#xff0c;另一个采用的为python2&#xff08;通过两个版本的print函数不同观察&#xff0c;一个print&…

AWS Lambda事件源映射:使您的触发器混乱无序

最近&#xff0c;我们为Sigma Cloud IDE上的无服务器项目引入了两个新的AWS Lambda事件源&#xff08;触发类型&#xff09;&#xff1a; SQS队列和DynamoDB流 。 &#xff08;是的&#xff0c;AWS在几个月前就向他们介绍了&#xff1b;但是我们仍然是一个很小的团队&#xff0…

pat 乙级 1047 编程团体赛(C++)

题目 编程团体赛的规则为&#xff1a;每个参赛队由若干队员组成&#xff1b;所有队员独立比赛&#xff1b;参赛队的成绩为所有队员的成绩和&#xff1b;成绩最高的队获胜。现给定所有队员的比赛成绩&#xff0c;请你编写程序找出冠军队。 输入格式&#xff1a; 输入第一行给出…

Sublime Text3常用基本操作

1 在每行光标快速移动 光标移动至行首:(home)键&#xff1b;光标移动至行尾:(end)键&#xff1b;(ctrl)(→)是单位性移动光标ctrl shift -> 是选中单位性移动光标 2 快速定位至文件首或尾 window: ctrl home / end mac: cmd ↓全选左 / 右方向键 3 选中一行快捷键 Shi…

pat 乙级 1011 A+B 和 C(C++)

题目 给定区间 [−2​31​​ ,2​31​​ ] 内的 3 个整数 A、B 和 C&#xff0c;请判断 AB 是否大于 C。 输入格式&#xff1a; 输入第 1 行给出正整数 T (≤10)&#xff0c;是测试用例的个数。随后给出 T 组测试用例&#xff0c;每组占一行&#xff0c;顺序给出 A、B 和 C。…

ubuntu安装后需了解的基本操作

转载原文链接&#xff1a;https://blog.csdn.net/weixin_44487337/article/details/99938348 &#xff08;一&#xff09;更换源 编辑/etc/apt/sources.list cp /etc/apt/sources.list /etc/apt/sources_default.list vi /etc/apt/sources.list //将cn.archive.ubuntu.com替换…

java 并发计数器_Java 8 LongAdders:管理并发计数器的正确方法

java 并发计数器我只是买了新玩具&#xff0c;而Java 8有很多 。 这次我想谈谈我的最爱之一-并发加法器。 这是一组新的类&#xff0c;用于管理由多个线程编写和读取的计数器。 新的API有望显着提高性能&#xff0c;同时仍使事情简单明了。 自从多核体系结构问世以来人们一直在…

pat 乙级 1012 数字分类(C++)

题目 给定一系列正整数&#xff0c;请按要求对数字进行分类&#xff0c;并输出以下 5 个数字&#xff1a; A1 能被 5 整除的数字中所有偶数的和&#xff1b;A2 将被 5 除后余 1的数字按给出顺序进行交错求和&#xff0c;即计算n1-n2n3-n4…&#xff1b;A3 被 5 除后余 2 的…

Ubuntu千万不要运行的命令

1 sudo apt-get dist-upgrade 成功把16.04“升级”至18.04并把系统搞崩导致登录不进去

使用Open Liberty的开发模式最大程度地缩短周转时间

我上传了一个视频&#xff0c;其中显示了如何在编写部署在Open Liberty上的Enterprise Java应用程序时减少周转时间。 Maven插件的liberty:dev目标监视文件更改并立即应用更改&#xff0c;而无需重建整个部署工件。 我将展示Open Liberty如何在我们更改源代码&#xff0c;配置…

pat 乙级 1022 D进制的A+B(C++)

题目 输入两个非负 10 进制整数 A 和 B (≤2​30 −1)&#xff0c;输出 AB 的 D (1<D≤10)进制数。 输入格式&#xff1a; 输入在一行中依次给出 3 个整数 A、B 和 D。 输出格式&#xff1a; 输出 AB 的 D 进制数。 输入样例&#xff1a; 123 456 8 输出样例&#xff…

数独 -- 合法数独与完全数独

一、数独的介绍 从2004年底开始&#xff0c;数独游戏在英国变得非常流行。数独(Sudoku)是一个日语单词意思是数字位置之类的单词(或短语)。谜题的理念非常简单;面对一个9 9的网格&#xff0c;被分成9个3 3的块: 在其中的一些盒子里&#xff0c;设置者放一些数字1-9:求解者的目…

程序包无效:“CRX_HEADER_INVALID“

版权声明&#xff1a;本文为博主转载文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 转载本文链接&#xff1a;https://blog.csdn.net/qq_41973208/article/details/89431020 之前在安装谷歌插件的时候遇到的问题&#xff0c;解决…

pat 乙级 1027 打印沙漏(C++)

题目 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”&#xff0c;要求按下列格式打印 所谓“沙漏形状”&#xff0c;是指每行输出奇数个符号&#xff1b;各行符号中心对齐&#xff1b;相邻两行符号数差2&#xff1b;符号数先从大到小顺序递减到1&#x…

Kogito人机规则-第1部分:进一步解决流口水

Kogito计划是我们承诺将我们的业务自动化套件引入云和更大的Kubernetes生态系统的承诺。 但这对我们钟爱的规则引擎Drools意味着什么&#xff1f; 在这篇文章中&#xff0c;我们介绍使用规则单元的模块化规则库&#xff1a; 一个特点&#xff0c;一直是在Drools中7一段时间的…

chrome 占用大量内存直到网页崩溃_Chrome吃内存太夸张!几招解决Chrome占内存硬伤...

我们知道Chrome是非常出色的浏览器&#xff0c;无论从性能还是功能的角度来看&#xff0c;都是如此。但是Chrome在内存占用方面的表现&#xff0c;就很令人头疼了&#xff01;常常听到有朋友抱怨&#xff0c;想要上网找找素材&#xff0c;不一会儿发现Chrome已经将PS要用的内存…

pat 乙级 1014 福尔摩斯的约会 (C++)

题目 大侦探福尔摩斯接到一张奇怪的字条&#xff1a; 我们约会吧&#xff01;3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm。大侦探很快就明白了&#xff0c;字条上奇怪的乱码实际上就是约会的时间星期四 14:04. 因为前面两字符串中第 1 对相同的大写英文字…

windows和ubuntu双系统设置开机默认系统

1、记住grub界面中windows的位置 我的界面如下&#xff1a;windows在第3行 2、选择进入ubuntu系统 3、打开终端&#xff0c;输入如下命令 sudo vim /etc/default/grub 4、看到如下图的内容 GRUB_DEFAULT是开机启动的默认项&#xff08;我的windows是第3行&#xff0c;所以此…

jenkins jboss_与JBoss Fuse,Jenkins和Nexus的持续集成

jenkins jboss最近&#xff0c;我正在整理一个快速启动的Maven项目&#xff0c;以展示组织JBoss Fuse项目的可能方法。 该项目可以在Github上找到&#xff1a; https : //github.com/paoloantinori/fuse_ci 这是我与朋友詹姆斯罗林斯 &#xff08; James Rawlings&#xff09…