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

/*  
.*Copyright (c)2015,烟台大学计算机与控制工程学院  
.*All rights reserved.  
.*文件名称:H1.cpp  
.*作    者:辛志勐 
.*完成日期:2015年9月8日  
.*版 本 号:v1.0  
.*  
.*问题描述:传值和传地址。在C++中,又拓展了引用方式。通过本项目,确认自己已经掌握了这三种方式的原理,为后续学习做好准备。 
  
..*输入描述:无  
..*程序输出:学生平均分,课程平均分。  
..*/


(1)传值
#include<stdio.h>
void myswap(int x, int y)//此操作为传值,即将a的值传给x,b的值传给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;
}
/*这种做法并不能成功,因为传值是将a的值赋给x,b的值赋给y,
操作时只是将xy的值相交换,而返回的值是ab,ab的值并没有交换,所以没有交换成功。*/

运行结果:


(2)传地址
#include<stdio.h>
void myswap(int *p1, int *p2)//此操作使用了指针,将a的地址赋给p1,b的地址赋给了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;
}
/*这种做法能成功,因为此次传的是址,实质上p1与p2的交换等于a与b的交换。*/

运行结果:


(3)引用做形参
#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;
}
/*这种做法能成功,因为引用的形参数值被修改的同时,也修改了对应实参的值。*/

运行结果:

 

知识点总结:  实现两个数值的交换需要地址的交换。通过本次学习学会了如何实现两个数的交换。

学习心得:做传地址时遇到了些麻烦,但通过百度和同学的帮助也顺利地解决,总之失败是成功之母,相信自己以后会越挫越勇。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值