• 1 值传递:
#include<iostream>
using namespace std;
int main(){
void change(int ,int);
int x=2,y=3;
cout<<"交换前:x="<<x<<" y="<<y<<endl;
change(x,y);
cout<<"交换后:x="<<x<<" y="<<y<<endl;
return 0;
}
void change(int x,int y){
int temp;
temp=x;
x=y;y=temp;
cout<<"函数内:x="<<x<<" y="<<y<<endl;
}

  

    这种方式并不能改变 x,y的值,因为在函数交换后实参的值是没有变的。只是在函数内部改变了x,y的值。
 
  • 指针传递

#include<iostream>
using namespace std;
int main(){
void change(int * ,int *);
int x=2,y=3;
cout<<"交换前:x="<<x<<" y="<<y<<endl;
change(&x,&y);
cout<<"交换后:x="<<x<<" y="<<y<<endl;
return 0;
}
void change(int *x,int *y){
int temp;
temp=*x;
*x=*y;
*y=temp;
}

  

指针传递交换的是实参的地址(传给给形参的是地址),所以最后x,y的值改变了
 
3引用传递
#include<iostream>
using namespace std;
int main(){
void change(int & ,int &);
int x=,y=;
cout<<"实参x的地址是:"<<&x<<endl;
cout<<"交换前:x="<<x<<" y="<<y<<endl;
change(x,y);
cout<<"交换后:x="<<x<<" y="<<y<<endl;
return ;
}
void change(int &x,int &y){
int temp;
temp=x;
x=y;
y=temp;
cout<<"形参x的地址是:"<<&x<<endl;
}

引用 &x,相当于给x去了一个别名,形参x和实参x=2 在内存中地址是相同。
 
 
 
综上,三种交换方式中间接引用的方式都能交换想x,y的值。
 

交换x,y的三种方式的更多相关文章

  1. Python交换a,b两个数值的三种方式

    # coding:utf-8 a = 1 b = 2 # 第一种方式 # t = a # 临时存放变量值 # a = b # b = t # 第二种方式 # a = a + b # a的值已经不是原始 ...

  2. 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)

          一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测 ...

  3. CSS控制样式的三种方式优先级对比验证

    入职已经一个月了,自此后,就好久没有写过博客了,在此先跟关注我的博友们说声抱歉.今天,在公司的一个培训作业的驱动以及伟哥那句“再不写博客就开除你”的监督下,我终于重拾旧爱,再次登录博客园,继续与大家分 ...

  4. Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式

    Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cut ...

  5. 前端js,css文件合并三种方式,bat命令

    前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...

  6. 加载gif动态图的三种方式

    准备:本地图片资源,GifView

  7. HTML5实现动画三种方式

    编者注:作者以一个运动的小车为例子,讲述了三种实现HTML5动画的方式,思路清晰,动画不仅仅是canvas,还有css3和javascript.通过合理的选择,来实现最优的实现. PS:由于显卡.录制 ...

  8. Android 接入 OpenCV库的三种方式

           OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少 ...

  9. 使用zabbix监控mysql的三种方式

    使用zabbix监控mysql的三种方式 1.只是安装agent 2.启用模板监控 3.启用自定义脚本的模板监控 zabbix中默认有mysql的监控模板.默认已经在zabbix2.2及以上的版本中. ...

随机推荐

  1. 关于解决coursera视频缓冲问题

    关于解决coursera视频缓冲问题 之前使用coursera,不FQ的话,视频根本加载不出来,于是每次都FQ过去看的视频.后来发现可以直接修改hosts就可以了. 以下方法来源知乎的回答(侵删). ...

  2. python基础===类的私有属性(伪私有)

    说在前面的一点: python明明有私有的定义方法就是在变量或者方法的面前加上双下滑线__,这个实际上是python的伪私有.只是一种程序员约定俗称的规定,加了就表示私有变量,但是你如果要在外部调用的 ...

  3. [New learn]讲解Objective-c的block知识-实践

    1.简介 在之前的文章[New learn]讲解Objective-c的block知识中介绍了block的相关知识.本章中我们将以一个实际例子来简单介绍一下block如何代替代理. 2.原有通过代理实 ...

  4. Vim配置Node.js开发工具

    ubuntu安装vim编辑器.默认情况下,vim在运行的时候会加载-/.vimrc文件里的配置文件,如果在-目录下不存在这个配置文件可以手动创建. 在-/.vim目录下是vim的插件加载的位置,可以在 ...

  5. iframe的一些介绍

    iframe 元素会创建包含另外一个文档的内联框架(即行内框架) 提示:您可以把需要的文本放置在 <iframe> 和 </iframe> 之间,这样就可以应对无法理解 ifr ...

  6. U43597 积木

    题目背景 小 XX 感到很无聊,从柜里翻出了小时候玩的积木. 题目描述 这套积木里共有 \(n\) 块,每块积木都是一个长方体. 小 X 想知道这些积木拼成一个积木塔(不必每一块 积木都使用). 所谓 ...

  7. spring mvc3+默认首页设置问题

    web.xml配置: <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-patte ...

  8. Dubbo简单DEMO以及重要配置项

    DEMO pom.xml 消费方和服务提供方一致 <properties> <spring.version>4.0.6.RELEASE</spring.version&g ...

  9. Guava Cache 使用笔记

    https://www.cnblogs.com/parryyang/p/5777019.html https://www.cnblogs.com/shoren/p/guava_cache.html J ...

  10. EL表达式使用时出现NumberFormatException异常

    从后端数据库取出书本集合,然后循环输出到前端表格: <c:forEach items="${bookManagedBean.bookList}" var="book ...