您的位置:首页 > 编程语言 > C语言/C++

第二周 项目1:c++语言中函数参数传递的三种方式

2016-09-08 21:38 323 查看
/* 

 *Copyright (c++) 2015,烟台大学计算机学院 

 *All rights reserved. 

 *文件名称:test.cpp 

 *作者:姜孝龙 

 *完成日期:2016年9月8日 

 *版本号:v1.0 

 * 

 *问题描述:通过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<<"请输入a的值:"<<endl;  

   cout<<"a=";  

   cin>>a;  

   cout<<"请输入b的值:"<<endl;  

   cout<<"b=";  

   cin>>b;  

   myswap(a,b);  

   cout<<"运行后的结果:"<<endl;  

   cout<<"a="<<a<<endl;  

   cout<<"b="<<b<<endl;  

   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<<"请输入a的值:"<<endl;  

   cout<<"a=";  

   cin>>a;  

   cout<<"请输入b的值:"<<endl;  

   cout<<"b=";  

   cin>>b;  

   myswap(&a,&b);  

   cout<<"运行后的结果:"<<endl;  

   cout<<"a="<<a<<endl;  

   cout<<"b="<<b<<endl;  

   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<<"请输入a的值:"<<endl;  

   cout<<"a=";  

   cin>>a;  

   cout<<"请输入b的值:"<<endl;  

   cout<<"b=";  

   cin>>b;  

   myswap(a,b);  

   cout<<"运行后的结果:"<<endl;  

   cout<<"a="<<a<<endl;  

   cout<<"b="<<b<<endl;  

   return 0;  
}  



知识点总结:

在第一个实验值传递中  由于只是改变了其形参  但没有改变它的实参  进而没有改变成功,这个问题已开始我也没有想过来  当时已经感觉到自己想的一切都对 但是就是不知道问题在哪 经过同学讲解后 我这是才意识到错误,在址传递中  由于是两个地址之间的交换而改变了形参  所以使得可以改变其值,第三个引用中,调用交换函数时,形参x与实参a占用同一个空间,形参y与实参a占用同一个空间,当运行调用函数后,将x,y的值互换,a,b的值解救同时改变了。我对于形参和实参之间的关系又有了进一步的理解
 还需努力!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: