第二周—C/C++语言中函数参数传递的三种方式

来源:互联网 发布:淘宝账号怎么升级心 编辑:程序博客网 时间:2024/06/06 18:39
/*  *Copyright(c++)2016,烟台大学计算机与控制工程学院  *All rights reserved.  *文件名称:cpp1.cpp  作者:王华慧 完成日期:2016年09月07日  版本号:v1.0  *  *问题描述::用C语言中传值和传地址。在C++中使用引用方式。            通过本项目,确认自己已经掌握了这三种方式的原理,为后续学习做好准备。   *输入描述:两个整数 *程序输出:交换后的两个数 */  
1.传值
#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<<"请输入待交换的两个整数:";            cin>>a>>b;         myswap(a,b);            cout<<"调用函数交换后的结果是:"<<a<<" "<<b;        return 0;    }   
运行结果
2.传地址
#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<<"请输入待交换的两个整数:";            cin>>a>>b;         myswap(&a,&b);            cout<<"调用函数交换后的结果是:"<<a<<" "<<b;        return 0;    }   
运行结果
3.引用
#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<<"请输入待交换的两个整数:";            cin>>a>>b;         myswap(a,b);            cout<<"调用函数交换后的结果是:"<<a<<" "<<b;        return 0;    }   
运行结果
总结:        第一种传值没有成功交换,原因在于在函数调用时创建的x,y变量为局部变量,myswap函数体中只对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进行了交换。故交换成功。学习心得:        通过比较 C/C++语言中函数参数传递的三种方式,了解了C++语言中函数参数传递的实质,在队长的指导下复习巩固了以前所学的知识,理解了这三种方式。对于形参和实参的掌握更加牢固了。
阅读全文
1 0
原创粉丝点击