第2周项目1-C/C++语言中函数参数传递的三种方式
2015-09-11 08:53
260 查看
/* *Copyright (c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:张晗 *完成日期:2015年9月11日 *版本号:v1.0 * *问题描述:运用传值、传地址、和引用作形参的办法交换两个整型变量。 *输入描述:两个字符 *程序输出:交换后的两个字符 */
<span style="color:#ff0000;">按值传递: </span>#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; }
<span style="color:#ff0000;">运行结果:</span>
由运行结果来看,两整数没有进行交换。因为使用这种方式,即使形参的值在函数中发生了变化,实参的值也完全不会受到影响,仍为调用前的值,故没有进行交换。
地址传递:
#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; }
运行结果:
由运行结果看,进行了交换。地址传递与按值传递的不同在于,它把实参的存储地址传送给对应的形参,从而使得形参指针和实参指针指向同一个地址。
引用传递:
#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; }
运行结果:
由运行结果看,进行了交换。如果以引用为参数,则既可以使得对形参的任何操作都能改变相应的数据,又使得函数调用显得方便、自然。引用传递方式是在函数定义时在形参前面加上引用运算符“&”。 <span style="color:#ff0000;">知识点总结:</span>
此程序加深了我们对三种传递方式的理解。 <span style="color:#ff0000;">学习心得: </span>刚开始有点不太理解三种传递方式的原理,通过反复的修改程序并且向组员求解不懂的问题,加深了自己的理解,希望以后可以越来越熟练的运用。
相关文章推荐
- 第二周 项目1-C/C++语言中函数参数传递的三种方式
- 第2周项目1-C/C++语言中函数参数传递的三种方式
- c++指针存储应用程序和释放内存的问题
- Effective C++ —— 让自己习惯C++(一)
- 第2周 项目1-C/C++语言中函数参数传递的三种方式
- 第二周项目1 - C/C++语言中函数参数传递的三种方式
- 第二周 项目1-C/C++语言中函数参数传递的三种方式
- 项目1-C语言中函数参数传递的三种方式
- RAII惯用法:C++资源管理的利器
- 第二周 项目1 C/C++语言中函数参数传递的三种方式
- 第2周 项目1 - C/C++语言中函数参数传递的三种方式
- 第2周项目1c/c++语言中函数参数传递的三种方式
- 【第2周 项目2 - 程序的多文件组织】
- C/C++语言中函数参数传递的三种方式
- C++Primer第五版 3.2.2节练习
- C++Primer第五版 3.1节练习
- C++Primer第五版 第2章 变量和基本类型(练习解答)
- 第二周——项目21C++语言中函数参数传递的三种方式
- C++Primer第五版 2.6.3节练习
- C++Primer第五版 2.6.2节练习