【项目1 - C/C++语言中函数参数传递的三种方式】
/*
* Copyright (C) 2016, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称 : hhh.cpp
* 作 者 : 张雨萌
* 完成日期 : 2017年9月12日
* 版 本 号 : v1.0
问题描述: C语言提供了两种函数参数传递的方式:传值和传地址。在C++中,又拓展了引用方式。下面是希望能够交换两个整型变量的swap函数的三个版本
输入描述: 两个整型变量
程序输出: 交换值之后的两个整型变量
程序代码如下:
(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);
void myswap(int a, int b); //传值给形参
printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
return 0;
}
运行结果:失败
(2) 传地址
#include<stdio.h>
using namespace std;
void myswap(int *p1, int *p2) //指针变量做形参,不再单独开辟内存空间
{
int t;
t=*p1;
*p1=*p2;
*p2=t;
} //通过指针改变两个数值,从而完成数值交换
int main()
{
int a, b;
int *p1,*p2;
printf("请输入待交换的两个整数:");
scanf("%d %d", &a, &b);
p1=&a;
p2=&b;
myswap(p1, p2); //指针变量做形参
printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
return 0;
}
运行结果:成功
(3)引用做形参
#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); //引用做形参
printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
return 0;
}
运行结果:成功
知识点总结:
在这个程序中,再一次复习了三种交换函数,加深了对形参及实参的认识。
学习心得:
在编程的过程中发现了许多平时不会注意的问题,在多次调试代码的过程中,我变得更细心了,考虑问题也变得更加全面,希望以后越来越好!