问题:
传值:
/*
*Copyright(c)2016, 烟台大学计算机学院
*All rights reserved.
*文件名称:0000.cpp
*作者:白晓娟
*完成日期:2016.9.7
*问题描述:交换两个整型变量的三种方式
*输入描述:输入两个整型变量
*程序输出:输出交换后的两个整型变量
*/
#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;
}
<span style="font-family: Arial, Helvetica, sans-serif;">传地址:</span>
<span style="font-family: Arial, Helvetica, sans-serif;">/*</span>
/*Copyright(c)2016, 烟台大学计算机学院
*All rights reserved.
*文件名称:0000.cpp
*作者:白晓娟
*完成日期:2016.9.7
*问题描述:交换两个整型变量的三种方式
*输入描述:输入两个整型变量
*程序输出:输出交换后的两个整型变量
*/
#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;
}
引用做形参:
/*
*Copyright(c)2016, 烟台大学计算机学院
*All rights reserved.
*文件名称:0000.cpp
*作者:白晓娟
*完成日期:2016.9.7
*问题描述:交换两个整型变量的三种方式
*输入描述:输入两个整型变量
*程序输出:输出交换后的两个整型变量
*/
#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;
}
结果:
传值:
传地址:
引用做形参:
知识点总结:
第一种传值方式无法得到真正转换的原因是这样的转换方式只转换了形参的值,函数调用结束之后,形参的空间释放消失,而最终实参并没有交换。
第二种传地址的方式可以达到效果的原因是实参向形参传递存储单元地址,改变形参指向的单元的值。
第三种引用形参也可以成功的原因是实参和形参共用存储空间,形参交换实参也交换。
学习心得:
解决问题的方法有很多,需要我们不断尝试。