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

/*

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

*All right reserved.

 *文件名称:fangzhou.cpp

*作者:吕方舟

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

*版本号:v1.0 

*

 *问题描述:通过输入两个整数,编写三个版本的交换函数,通过分别调用三个版本的交换函数,观察输出结果

*输入描述:两个需要交换的整数 *程序输出:交换后的两个整数

 */

//(1)传值

#include<stdio.h>
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)传地址

#include<stdio.h>
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(&a,&b);    //分三个程序,分别写上调用myswap的合适形式
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
    return 0;
}

运行结果:

//(1)引用作形参

#include<stdio.h> 
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;

}

运行结果:

 

 

 

知识点总结:

       通过对C++语言中函数参数传递问题等的三中方式的应用尝试,观察结果发现用第一种传值的方式并不能实现最终的参数传递的效果,而用传地址和引用作形参的这两种方法都可以做到参数传递。

      用传值的方式不成功的原因是,用这样的转换方式只转换了形参的值,函数调用结束后,形参空间即释放,但最终实参并没有交换,但若用以下不用调用函数的方法,形参空间不会释放,整个参数传递步骤一气呵成,就可以达到最后的效果。

#include<stdio.h> 
int main()
{
 int t;
    int a, b;
    printf("请输入待交换的两个整数:");
    scanf("%d %d", &a, &b);

    t=a;
    a=b;
    b=t;
   //分三个程序,分别写上调用myswap的合适形式
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
    return 0;
}

 

       利用传地址的方式可以达到效果的原因是,实参向形参传递存储单元地址,从而改变形参指向的单元的值,从根本上交换了二者。

       引用形参也可以成功的原因是实参和形参共用一个存储空间,形参交换那么实参也交换。


 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值