第二周 项目1函数参数传递的三种方式

来源:互联网 发布:holy potatoes人物数据 编辑:程序博客网 时间:2024/06/03 20:17

问题及代码:

传值:/**烟台大学计控学院*文件名称:cpp.1*作    者:孙启先*完成日期:2016年9月8日*问题描述:交换两个整型变量的三种方式*输入描述:输入两个整型变量*输出描述:输出交换后的两个整型变量*/#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;}  传地址:/**烟台大学计控学院*文件名称:cpp.1*作    者:孙启先*完成日期:2016年9月8日*问题描述:交换两个整型变量的三种方式*输入描述:输入两个整型变量*输出描述:输出交换后的两个整型变量*/#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;}引用作形参:/**烟台大学计控学院*文件名称:cpp.1*作    者:孙启先*完成日期:2016年9月8日*问题描述:交换两个整型变量的三种方式*输入描述:输入两个整型变量*输出描述:输出交换后的两个整型变量*/#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;}

运行结果:

传值

传地址

 

引用形参

知识点总结:

第一种传值方式无法得到真正转换的原因是这样的转换方式只转换了形参的值,函数调用结束之后,形参的空间释放消失,但最终实参并没有交换

第二种传地址的方式可以达到效果的原因是实参向形参传递存储单元地址,改变形参指向的单元的值

第三种引用形参也可以成功的原因是实参和形参共用存储空间,形参交换实参也交换

 

学习心得:一种问题的解决能有多重方式,想要寻找最简单的解决方式就需要通过自己的多次实践。

0 0