第二周项目1函数参数传递的三种方式
2015-09-11 08:37
169 查看
/* .*Copyright (c) 2014,烟台大学计算机学院 *All right reserved. *文件名称:函数参数传递的三种方式.cpp *作者:彭子竹 *完成日期:2015年9月11日 *版本号:v1.0 * *问题描述:编写能够交换两个变量的swap函数的三个版本。 *程序输入:待交换的的两个整数。 *程序输出:交换后的结果。 */
(1)传值
#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; }
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; } 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; } void myswap(int &x, int &y) { int t; t=x; x=y; y=t; }
运行结果:
结果:
第三种方法进行了交换。把引用作为参数,形参的任何变化实参都会发生变化,而且比第二种方法更简便。引用传递方式是在函数定义时在形参前面加上引用运算符“&”。
知识点总结:
通过运行结果对比,加深了我对这三种方式的理解,避免出现第一种方法的错误。
学习心得:
我直接复制的原程序,根本没检查一边,结果主函数没声明交换函数,所以运行的三种结果都是错的。所以粗心是我以后要攻克的难关。
相关文章推荐
- Xcode 7免证书真机调试
- 判断Jquery是否被引用
- android 菜单介绍
- Android ADB命令
- 读写文件
- 第二周 项目1-C/C++语言中函数参数传递的三种方式
- Ubuntu Touch 迎来同步/消息/电话/浏览器等方面的改进
- 启动android 虚拟机提示内存错误的解决办法
- 【项目3 - 体验复杂度之一 复杂度为O(n 2 )的选择排序selectsort】
- 项目1-C语言中函数参数传递的三种方式
- NYOJ 1163 cakes
- 求并联电阻阻值
- Hadoop学习笔记九之Java heap space(堆溢出)
- 高清电视产业的关键词,4K过渡时期8K未来
- WAMP 80端口被Microsoft-HTTPAPI/2.0占用怎么解决
- (第二周项目2)程序的多文件组织
- [置顶] Qt绘图控件QCustomPlot安装
- Exception in thread "main" com.mysql.jdbc.NotUpdatable
- 设置Activity的显示位置
- 认证流程【4】-http_callback_auth()函数