问题及代码:
传值:
/*
*烟台大学计控学院
*文件名称:cpp2
*作 者:杨征
*完成日期:2015年9月27日
*问题描述:交换两个整型变量的三种方式
*输入描述:输入两个整型变量
*输出描述:输出交换后的两个整型变量
*/
#include<iostream>
using namespace std;
void myswap(int x, int y)//传值
{
int t;
t=x;
x=y;
y=t;
}
int main()
{
int a, b;
cout<<"请输入待交换的两个整数:"<<endl;
cin>>a>>b;
myswap(a,b);
cout<<"调用交换函数后的结果是:"<<endl;
cout<<a<<" "<<b<<endl;
return 0;
}
传地址:
/*
*烟台大学计控学院
*文件名称:cpp2
*作 者:杨征
*完成日期:2015年9月27日
*问题描述:交换两个整型变量的三种方式
*输入描述:输入两个整型变量
*输出描述:输出交换后的两个整型变量
*/
#include<iostream>
using namespace std;
void myswap(int *p1, int *p2)//传地址
{
int t;
t=*p1;
*p1=*p2;
*p2=t;
}
int main()
{
int a, b;
cout<<"请输入待交换的两个整数:"<<endl;
cin>>a>>b;
myswap(&a,&b);
cout<<"调用交换函数后的结果是:"<<endl;
cout<<a<<" "<<b<<endl;
return 0;
}
引用作形参:
/*
*烟台大学计控学院
*文件名称:cpp2
*作 者:杨征
*完成日期:2015年9月27日
*问题描述:交换两个整型变量的三种方式
*输入描述:输入两个整型变量
*输出描述:输出交换后的两个整型变量
*/
#include<iostream>
using namespace std;
void myswap(int &x, int &y)//引用形参
{
int t;
t=x;
x=y;
y=t;
}
int main()
{
int a, b;
cout<<"请输入待交换的两个整数:"<<endl;
cin>>a>>b;
myswap(a,b);
cout<<"调用交换函数后的结果是:"<<endl;
cout<<a<<" "<<b<<endl;
return 0;
}
运行结果:
传值
传地址
引用形参
知识点总结:
第一种传值方式无法得到真正转换的原因是这样的转换方式只转换了形参的值,函数调用结束之后,形参的空间释放消失,但最终实参并没有交换
第二种传地址的方式可以达到效果的原因是实参向形参传递存储单元地址,改变形参指向的单元的值
第三种引用形参也可以成功的原因是实参和形参共用存储空间,形参交换实参也交换
学习心得:
一个问题可以有多种解决方式,但每个解决方式有正确有错误,有简单也有麻烦,要想寻求最简单的解决方式就必须要经过无数次的实践!