【第二周】项目1
来源:互联网 发布:天互数据在哪 编辑:程序博客网 时间:2024/06/04 23:24
问题描述:输入两个待交换的整数,调用函数得到两个交换的整数值
输入:两个整数
输出:两个整数交换的值
1.传值
#include <iostream>using namespace std;void myswap1(int x,int y);void myswap2(int *p1,int *p2);void myswap3(int &x,int &y);int main(){ int a,b; cin>>a>>b; myswap1(a,b); cout<<a<<" "<<b<<endl;} void myswap1(int x,int y)//传值 { int t; t=x; x=y; y=t; }运行结果
2.传地址
#include <iostream>using namespace std;void myswap1(int x,int y);void myswap2(int *p1,int *p2);void myswap3(int &x,int &y);int main(){ int a,b; cin>>a>>b; myswap2(&a,&b); cout<<a<<" "<<b<<endl;} void myswap2(int *p1,int *p2)//传地址 { int t; t=*p1; *p1=*p2; *p2=t; }
运行结果
3.引用
#include <iostream>using namespace std;void myswap1(int x,int y);void myswap2(int *p1,int *p2);void myswap3(int &x,int &y);int main(){ int a,b; cin>>a>>b; myswap2(a,b); cout<<a<<" "<<b<<endl;} void myswap3(int &x,int &y)//引用 { int t; t=x; x=y; y=t; }运行结果
知识点总结:
第一种方式没有成功交换,原因在于在函数调用时创建的x,y变量是局部变量,只是接收了a和b的值,函数体中对x,y进行了交换并未对a,b本身进行交换。而x,y在调用结束后又被自动释放了。故不能成功交换。
第二种方式交换成功,函数使用了指针变量做函数的形式参数,传递的是a,b两变量的地址。在函数体中是对两地址所指向的变量进行了交换,所以交换了a,b两变量的值,交换成功。
第三种方式交换成功,是使用了引用方式。所谓引用例如int &a=b,代表的是a是b的别名,a与b占用的是同一个存储空间,也就是说a就是b。函数形式参数的x,y实际上就是a和b。在函数体中对x,y进行交换实际上就是对a,b进行了交换。故交换成功。
阅读全文
0 0
- 第二周项目1
- 第二周项目1
- 第二周项目1
- 第二周 项目1
- 第二周项目-1
- 第二周项目1
- 第二周项目1
- 第二周项目1
- 【第二周】项目1
- 第二周 项目1
- 补 第二周 项目1
- 第二周 项目3-1
- 第二周项目三.1
- 第二学期第二周项目1--学生成绩统计
- 第二周项目 1 三角形类1
- 第二周项目1-学生成绩统计
- 第二周项目1学生成绩统计
- 第二周项目1 学生成绩统计
- ubuntu下执行mysql脚本
- spring-cloud-eureka-client之spring-cloud-1.3.4(Dalston.SR3)-boot(1.5.6) 学习笔记
- 互斥锁(加锁和解锁操作)
- eclipse for python
- 仿制一个简单的聊天软件
- 【第二周】项目1
- java Web应用
- iOS【YTKNetwork源码解析】
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 E. Maximum Flow(最大流/规律)
- Unity Shader 内置函数
- CSS3之创建3D场景
- 介个HOW 玩?
- HDU2084 数塔 动态规划入门-递推
- spring拦截器、与filter的区别