• 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的值。
 

最新文章

  1. [转]在MyEclipse中设置struts.xml自动提示功能
  2. ios 添加伪闪屏
  3. jquery网页换肤+jquery的cookie+动态调用css样式文件,可以的
  4. C#中的Excel操作【1】——设置Excel单元格的内容,打开Excel文件的一种方式
  5. sqlserver插入时发生在“xxx”处关键发生错误
  6. 【leetcode】Sqrt(x)
  7. Java中接口式的匿名内部类的构造方法
  8. mybatis中#和$符号的区别
  9. UILabel 的使用,属性详解
  10. mysql数据库字段区分大小写的设置方法
  11. php调用com组件配置 以openoffice为例
  12. HNCU1330:算法3-1:八进制数
  13. sqlserver 更改跟踪相关知识
  14. .NET 反编译调试神器:dnSpy了解一下
  15. systemd-unit
  16. python使用 HTMLTestRunner.py生成测试报告
  17. python &amp; MySQLdb(two)
  18. HighCharts插件学习(二)
  19. C# 生成随机订单号
  20. Unity3D笔记 切水果三 切水果

热门文章

  1. hdu 3371(prim算法)
  2. 概率DP入门学习QAQ
  3. linux===linux后台运行和关闭、查看后台任务(转)
  4. CNN中千奇百怪的卷积方式大汇总
  5. 【LabVIEW技巧】策略模式
  6. HDU 2829 Lawrence(斜率优化DP O(n^2))
  7. .net core web api 获取request body的纯文本
  8. LoadRunner脚本回放日志中的Warning信息
  9. 每一对顶点间最短路径的Floyd算法
  10. &lt;&lt;持续交付&gt;&gt;终点的精彩