第二周-项目1 - C/C++语言中函数参数传递的三种方式
2015-10-05 17:26
330 查看
//(1)传值
#include<stdio.h> 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); //分三个程序,分别写上调用myswap的合适形式 printf("调用交换函数后的结果是:%d 和 %d\n", a, b); return 0; }
//(2)传地址
#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; }
//(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; }
知识点总结:
第一种方法明显是行不通的,因为这种方法仅仅在调用的子函数中交换了两个数的位置,而子函数中的值没有返回到主函数中去,把值传递给参数的两个变量a和b没有改变。
第二种方法是可行的,利用指针,改变的是指定地址上的那个变量的值,不管这个值叫什么名字,只要地址没错就会有效。
第三种方法也是可行的,引用只是给这个变量另外起了一个名字,两个变量本就是一个值,就像一个大名一个小名,两个名下值的变动自然是相同的。
相关文章推荐
- C++中赋值运算符与逗号运算符的用法详解
- C++中对象的赋值与复制操作详细解析
- C++中复制构造函数和重载赋值操作符总结
- 设计模式C++达到 3.抽象工厂
- 【第4周 项目6 - 多项式求和】
- 深入C++中构造函数、拷贝构造函数、赋值操作符、析构函数的调用过程总结
- 【第4周 项目5 - 猴子选大王】
- 第六周-项目2 - 建立链栈算法库
- 【第4周 项目3 - 单链表应用(2)】
- C++继承方式
- 第4周项目3 单链表应用
- 【第4周 项目3 - 单链表应用(1)】
- 第六周-项目1 - 建立顺序栈算法库
- 【c++程序】浅谈继承与派生
- 第4周项目2 建设“单链表”算法库
- C语言中volatile关键字的作用
- 面试复习(C++)之快速排序
- C语言 整人程序“我是猪”
- 寻找最大值
- C语言用后序求表达式的结果