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

来源:互联网 发布:人人视频 mac客户端 编辑:程序博客网 时间:2024/05/16 17:56

问题及代码:

/* *Copyright(c) 2016,烟台大学计算机控制与工程学院 *All rights reserved. *文件名称:test.cpp *作者:刘倩 *完成日期:2016年9月4日 *版本号:v1.0 * *问题描述:函数参数传递的三种表示方式 *输入描述:输入带交换的两个整数 *程序输出:输出调用交换函数后的两个整数 */#include<iostream>using namespace std;void myswap(int x,int y){int t;t=x;x=y;y=t;}int main(){    int a,b;printf("请输入带交换的两个整数:");scanf("%d%d",&a,&b);    myswap(a,b);printf("调用交换函数后的结果是:%d 和 %d\n",a,b);return 0;}


运行结果:


原因分析:

形参交换,实参到形参是单向传递,函数调用后,形参被释放

传地址:

#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<<"调用交换函数后的结果是:"<<a<<" "<<b<<endl;return 0;}


原因分析:实参向形参传递存储单元地址,改变形参指向的单元的值。

引用做形参:

#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<<"调用函数交换后的结果是:"<<a<<" "<<b<<endl;      return 0;  }  

原因分析:实参和形参共用存储空间,形参交换实参也交换。

学习心得:

同一种方式不同方法,会得到不同的结果。



0 0