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

来源:互联网 发布:手工客软件 编辑:程序博客网 时间:2024/06/05 22:50
问题及代码:
/**Copyright (c) 2015, 烟台大学计算机学院*All rights reserved;*文件名称:test.cpp*作    者:于东林*完成日期:2015 9月7日*版本号:v1.0*问题描述:编制三个程序,分别调用三个版本的交换函数,观察结果,展示程序及运行结果,解释成功交换以及交换不成功的原因。*输入描述:输入待交换的两个数*输出描述:输出交换完成后的两个数*/<pre class="csharp" name="code">#include <stdio.h>//(1)传值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);//分三个程序,分别写上调用myswap的合适形式      printf("调用交换函数后的结果是:%d 和 %d\n", a, b);     return 0;  }  //(2)传地址void myswap(int *p1, int *p2)  {      int t;      t=*p1;      *p1=*p2;      *p2=t;  }  int main()  {     int a, b;      printf("请输入待交换的两个整数:");      scanf("%d %d", &a, &b);//分三个程序,分别写上调用myswap的合适形式       myswap(&a,&b);      printf("调用交换函数后的结果是:%d 和 %d\n", a, b);      return 0;  }  void myswap(int *p1, int *p2){    int t;t=*p1;*p1=*p2;*p2=t;}int main(){    int a, b;    printf("请输入待交换的两个整数:");    scanf("%d %d", &a, &b);//分三个程序,分别写上调用myswap的合适形式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;  }  int main()  {      int a, b;      printf("请输入待交换的两个整数:");      scanf("%d %d", &a, &b);      myswap(a,b);//分三个程序,分别写上调用myswap的合适形式       printf("调用交换函数后的结果是:%d 和 %d\n", a, b);      return 0;  }  

运行结果:
(1)传值
<img src="http://img.blog.csdn.net/20150911093541416?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
(2)传地址
<img src="http://img.blog.csdn.net/20150911093750362?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
(3)引用作形参
<img src="http://img.blog.csdn.net/20150911093750362?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
知识点总结:
  在第一个程序中,传值不成功的原因是指在形参上改变了数值,没有在实参上改变数值
  在第二个程序中,传地址成功的原因利用指针改变了原来的地址,所以实参就交换了   
  在第三个程序中,引用是直接改变两个实参变量a,b的值,所以就交换了
学习心得:
   C语言的学习是十分严谨的一门学科,必须要严谨,谨慎求学,虚心求教,一步一步打好基础,不去造成一些低级失误。

0 0
原创粉丝点击