/*
Copyright (c).2014, 烟台大学计算机学院
All rights reserved.
文件名称:test.cpp
作 者:吕云双
完成日期:2015年 9 月 11日
版 本 号:v1.0
问题描述:用三个程序调试交换函数
输入描述:待交换的两个整数
程序输出:交换后的两个整数
*/
1.值传递
#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);
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);
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);
printf("调用交换函数后的结果是: %d 和 %d\n",a,b);
return 0;
}
分析:引用直接更改实参的值,交换成功
运行结果:
学习心得:需要调用函数的值代入到原函数时,常常用指针和引用的形式。指针的形式也凸显了专业性与精准性与高效性。