/*
* Copyright(c) 2015,烟台大学计控学院
* All rights reserved.
* 文件名称 :mmh.cpp
* 作 者 :马鸣挥
* 完成时间 :2015年 9月11日
* 版 本 号 :v1.0
*
* 问题描述 :用三个版本的交换函数,观察结果。
* 输入描述 :两个待交换的整数
* 程序输出 :交换后得两个整数
*/
#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;
}
#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;
}
#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;
}
程序1运行结果
:
程序2运行结果:
程序3运行结果:
知识点总结:
从这三个程序中,我们可以进一步巩固对值传递、值传递、引用的认识。在结果中我们可以看出,值传递是无法交换成功的,输入a,b的值为1,2;在调用交换函数时,将a的值传给了x,b的值传给了y,运行交换函数后可知是将x,y的值互换,而a,b的值并没有因为x,y的变化而变化。在指传递中,输入a,b的值,将a,b的地址传给p1,p2,再调用交换函数,p1所指向的值与p2所指向的值互换,即结果为a,b的值为2,1;而在引用中,输入a,b的值,调用交换函数时,形参x与实参a占用同一个空间,形参y与实参a占用同一个空间,当运行调用函数后,将x,y的值互换,a,b的值也同样互换。