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

来源:互联网 发布:seer软件的用法 编辑:程序博客网 时间:2024/05/24 22:43

问题及代码:

/* * Copyright(c) 2017,烟台大学计算机学院 * All rights reserved. * 文件名称:cpp1. * 作    者:薛瑞琪 * 完成日期:2017 年 9 月 7 日 * 版 本 号:v1.0 * * 问题描述:输入两个整数a和b,通过调用函数swap传值输出它们置换后的数字* 输入描述:两个整数,代表两个待置换的数字 * 程序输出:两个整数,代表两个数字置换后的结果 */#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;}


运行结果:

问题及代码:

/* * Copyright(c) 2017,烟台大学计算机学院 * All rights reserved. * 文件名称:cpp1. * 作    者:薛瑞琪 * 完成日期:2017 年 9 月 7 日 * 版 本 号:v1.0 * * 问题描述:输入两个整数a和b,通过调用函数swap传地址输出它们置换后的数字* 输入描述:两个整数,代表两个待置换的数字 * 程序输出:两个整数,代表两个数字置换后的结果 */#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;}
运行结果:

问题及代码:

/* * Copyright(c) 2017,烟台大学计算机学院 * All rights reserved. * 文件名称:cpp1. * 作    者:薛瑞琪 * 完成日期:2017 年 9 月 7 日 * 版 本 号:v1.0 * * 问题描述:输入两个整数a和b,通过调用函数swap引用做形参输出它们置换后的数字* 输入描述:两个整数,代表两个待置换的数字 * 程序输出:两个整数,代表两个数字置换后的结果 */#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.调用函数将a,b的值,传递给x,y,并对x,y的值进行了交换,但并没传递回给a,b,所以a,b的值不改变

2.将x,y的地址传递给指针p1,p2,当调用函数将p1,p2的值进行交换后,相应的a,b值交换成功

3.引用作形参,形参x,y即a,b,不占用内存空间,调用进行交换值


学习心得:

深刻了解了函数参数传递不同方式的差别,看似都对,其实其中有很多细节需要真正实践了才发现存在问题。





阅读全文
0 0