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

来源:互联网 发布:数据分析职称 编辑:程序博客网 时间:2024/06/10 05:20
//(1)传值#include <iostream>  void myswap(int,int);  using namespace std;  int main()    {      int a, b;      printf("请输入待交换的两个整数:");      scanf("%d %d", &a, &b);      myswap(a,b);      printf("调用交换函数后的结果是:%d 和 %d\n", a, b);      return 0;  }  void myswap(int x, int y){    int t;    t=x;    x=y;    y=t;}

程序结果运行演示:


程序结果分析:

很明显第一个版本的交换变量方式不可行,原因是只传递了形参的值,而并未改变实参的值。形参在传递交换之后,内存空间被清除,而实参的内存空间与形参的内存空间相互独立,实参的值在形参内存被释放后仍未被更改,所以输出结果和原来输入的值相同。

//(2)传地址#include <iostream>  void myswap(int *,int *);  using namespace std;  int main()    {      int a, b;      printf("请输入待交换的两个整数:");      scanf("%d %d", &a, &b);      int *p1=&a;      int *p2=&b;      myswap(p1,p2);        printf("调用交换函数后的结果是:%d 和 %d\n", a, b);      return 0;  }  void myswap(int *p1, int *p2)  {      int  t;      t=*p1;      *p1=*p2;      *p2=t;  }

程序结果运行演示:


程序结果分析:

第二个程序中定义了两个整型指针p1,p2分别指向整型变量a,b的地址,这样在交换过程中传递的是p1与p2所指向地址存放的内容,故a,b得以交换成功。

//(3) 引用作形参  #include <iostream>  void myswap(int &a,int &b);  using namespace std;  int main()    {      int a, b;      printf("请输入待交换的两个整数:");      scanf("%d %d", &a, &b);      myswap(a,b);      printf("调用交换函数后的结果是:%d 和 %d\n", a, b);      return 0;  }  void myswap(int &x, int &y)  {      int t;      t=x;      x=y;      y=t;  }


程序结果运行演示:

程序结果分析:

第三个程序运用引用传递变量,形参与实参共同用一块内存空间,所以交换成功。

阅读全文
0 0
原创粉丝点击