第二周项目1--C/C++语言中函数参数传递的三种方式
来源:互联网 发布:复杂网络 计算机 编辑:程序博客网 时间:2024/06/05 21:58
问题及代码:
- /*
- * Copyright (c)2016,烟台大学计算机与控制工程学院
- * All rights reserved.
- * 文件名称:1.cpp
- * 作 者:陈哲
- * 完成日期:2016年9月7日
- * 版 本 号:v1.0
- * 问题描述:编制三个程序,分别采用函数参数传递的三种方式交换两个数。
- * 输入描述:两个整数
- * 程序输出:交换后的两个数
- */
代码:值传递
- #include<iostream>
- using namespace std;
- void myswap(int x, int y)
- {
- int t;
- t=x;
- x=y;
- y=t;
- }
- int main()
- {
- int a,b;
- cout<<"请输入待交换的两个整数:";
- cin>>a>>b;
- myswap(a,b);
- cout<<"调用函数交换后的结果是:"<<a<<" "<<b;
- return 0;
- }
代码:地址传递
- #include <iostream>
- using namespace std;
- 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);
- printf("调用交换函数后的结果:%d %d\n",a,b);
- return 0;
- }
运行结果:
代码:引用传递
- #include <iostream>
- using namespace std;
- 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);
- printf("调用交换函数后的结果:%d %d\n",a,b);
- return 0;
- }
知识点总结:
1、值传递交换不成功,原因是在主函数中调用myswap()函数,只是将a值赋给x,b值赋给y,交换的只是x和y,a、b的值并 未改变,仍是原来的值。实参到形参是单向 传递,函数调用后,形参被释放,实参没有调换位置。
2、地址传递交换成功,在调用myswap()函数时,a的地址传给p1,b的地址传给p2,即p1=&a,p2=&b,交换p1和p2,也就是 交换a和b。
3、引用传递交换成功,在调用myswap()函数时,x和y分别引用了a和b两个变量,就可以用函数引用实参ab。
学习心得:
通过编写三种函数参数传递方式的代码,让我对这三种方法有了更深的理解,并且可以知道了不成功的原因,再接再厉!
0 0
- 第二周项目1—C++/C语言中函数参数传递的三种方式
- 第二周项目1-C/C++语言中函数参数传递的三种方式
- 第二周项目1-c/c++语言中函数参数传递的三种方式
- 第二周项目1 C/C++语言中函数参数传递的三种方式
- 第二周项目1 C/C++语言中函数参数传递的三种方式
- 第二周 项目1-C/C++语言中函数参数传递的三种方式
- 第二周 项目1 C/C++语言中函数参数传递的三种方式
- 第二周 项目1-C/C++语言中函数参数传递的三种方式
- 第二周项目1 - C/C++语言中函数参数传递的三种方式
- 第二周 项目1-C/C++语言中函数参数传递的三种方式
- 第二周项目1 c/c++语言中函数参数传递的三种方式
- 第二周项目1—C/C++语言中函数参数传递的三种方式
- 第二周 项目1 c/c++语言中函数参数传递的三种方式
- 第二周 项目1-C/C++语言中函数参数传递的三种方式
- 第二周项目1-C/C++语言中函数参数传递的三种方式
- 第二周-项目1 - C/C++语言中函数参数传递的三种方式
- 第二周项目1-C/C++语言中函数参数传递的三种方式
- 第二周 项目1-C/C++语言中函数参数传递的三种方式
- 第二周项目1-C/C++语言中函数参数传递的三种方式
- codeforce C. Learning Languages(并查集)
- 杨辉三角 经典问题
- uva 12100 Printer Queue
- linux设备中的阻塞与非阻塞io
- 第二周项目1--C/C++语言中函数参数传递的三种方式
- poj1258(最小生成树Prim)
- js中prototype用法
- 为什么存储密码字符数组比字符串更合适?
- JAVA基础笔记(十七)JVM
- iOS开发CoreLocation框架
- Windows平台分布式架构实践 - 负载均衡
- Java面试题全集(中)
- JPA注解