• 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. Windows下基于python3使用word2vec训练中文维基百科语料(三)

    对前两篇获取到的词向量模型进行使用: 代码如下: import gensim model = gensim.models.Word2Vec.load('wiki.zh.text.model') fla ...

  2. 【转】png文件格式

    前言 我们都知道,在进行J2ME的手机应用程序开发的时候,在图片的使用上,我们可以使用PNG格式的图片(甚至于在有的手机上,我们只可以使用PNG 格式的图片),尽管使用图片可以为我们的应用程序增加不少 ...

  3. Caffe学习笔记3

    Caffe学习笔记3 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和h ...

  4. 网络知识===关于MAC地址和IP不能互相替代,缺一不可的原因

    最近在看书<图解TCP/IP>书中分别谈到了IP和MAC地址.于是我就有两个疑惑, 为什么有了IP地址,我们还要获取MAC地址? 为什么我们初始不直接使用MAC地址作为终点地址?还要那么复 ...

  5. 64_a2

    arquillian-core-parent-1.1.11-6.fc26.noarch.rpm 10-Feb-2017 13:22 12918 arquillian-core-spi-1.1.11-6 ...

  6. C json实战引擎 三 , 最后实现部分辅助函数

    引言 大学读的是一个很时髦的专业, 学了四年的游戏竞技. 可惜没学好. 但认真过, 比做什么都认真. 见证了  ...... 打的所有游戏人物中 分享一位最喜爱 的 “I've been alone ...

  7. android studio 64位手机+Fresco引起的在arm64位机器上找不到对应的so库

    我们的程序在32位机器上没有问题,有一天公司采购了一台魅族MX5 MTK的64位处理器上我们的应用报错了 "nativeLibraryDirectories=[/data/app/com.l ...

  8. form 表单获取所有数据 封装方法

    function getFormJson(frm) { var o = {}; var a = $(frm).serializeArray(); $.each(a, function () { if ...

  9. maven repository 配置

    eclipse maven 配置修改: maven repository 配置 http://blog.csdn.net/joewolf/article/details/4876604 Maven缺省 ...

  10. 关于微信获取access_token接口,返回值为-1000的问题

    今天打算获取token来,来修改公众号的菜单,结果像往常一样输入了appid 和 secret ,结果没有返回access_token,而是返回了一个-1000,并提示 "未知返回状态&qu ...