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

来源:互联网 发布:王源sleep 知乎 编辑:程序博客网 时间:2024/04/29 15:50
问题:
/* *Copyright (c)2016,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目1函数参数传递的三种方式.cpp *作    者:高金艳 *完成日期:2016年9月7日 *版 本 号:v1.0 * *问题描述:C语言提供了两种函数参数传递的方式:传值和传地址。            在C++中,又拓展了引用方式。通过本项目,确认自己            已经掌握了这三种方式的原理,为后续学习做好准备。 *输入描述:两个字符 *程序输出:交换后的两个字符 */  

(1)传值

#include<stdio.h>  void myswap(int,int);  int main()  {      int a, b;      printf("请输入待交换的两个整数:");      scanf("%d %d", &a, &b);      myswap(a,b);  //分三个程序,分别写上调用myswap的合适形式      printf("调用交换函数后的结果是:%d 和 %d\n", a, b);      return 0;  }  //(1)传值  void myswap(int x, int y)  {      int t;      t=x;      x=y;      y=t;  }  

 运行结果:


由运行结果来看,没有进行交换。因为使用这种方式,调用函数本身不对实参进行操作,因此没有进行交换。

(2)传地址

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

运行结果:


把实参的存储地址传送给对应的形参,从而使得形参指针和实参指针指向同一个地址。因此交换成功。

(3)引用做形参

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

运行结果:


x,y分别引用了a,b两个变量,实际上x,y就是a,b的别名,因此交换x,y就可以交换ab

知识点总结:

       从这三个程序中我进一步巩固了函数参数传递的三种方式,也更加理解了三种不同方式的区别。

学习心得:

      现在更深的理解了这三种方式,这只是开始,以后学习的还有更多更难,一定好好学。




0 0