/*
*Copyright(c) 2015级,烟台大学 计算机与控制工程学院
*All rights reserved.
*文件名称:main.cpp
*作 者:胡馨月
*完成日期:2016.9.8
*版 本 号:v1.0
*
*问题描述:将输入的两个数实行交换,并输出。
*输入描述:待交换的两个整数。
*程序输出:交换后的结果。
*/
#include <iostream>
using namespace std;
void myswap1(int x,int y); //对交换函数myswap1的提前声明 (传值)
void myswap2(int *p1,int *p2); //对交换函数myswap1的提前声明 (传地址)
void myswap3(int &x,int &y); //对交换函数myswap1的提前声明 (引用作形参)
int main()
{
int a,b;
cout<<"请输入待交换的两个整数:"<<endl;
cin>>a>>b;
myswap1(a,b); // 调用传值的交换函数myswap1
cout<<"调用传值的交换函数后的结果是:"<<endl;
cout<<a<<' '<<b<<endl;
cout<<"请输入待交换的两个整数:"<<endl;
cin>>a>>b;
myswap2(&a,&b); // 调用传地址的交换函数myswap2
cout<<"调用传地址的交换函数后的结果是:"<<endl;
cout<<a<<' '<<b<<endl;
cout<<"请输入待交换的两个整数:"<<endl;
cin>>a>>b;
myswap3(a,b); // 调用以引用作形参的交换函数myswap2
cout<<"调用以引用作形参的交换函数后的结果是:"<<endl;
cout<<a<<' '<<b<<endl;
return 0;
}
void myswap1(int x,int y)//交换函数myswap1的具体定义
{
int t;
t=x;
x=y;
y=t;
}
void myswap2(int *p1,int *p2) //交换函数myswap2的具体定义
{
int t;
t=*p1;
*p1=*p2;
*p2=t;
}
void myswap3(int &x,int &y) //交换函数myswap3的具体定义
{
int t;
t=x;
x=y;
y=t;
}
运行图片:
心得:掌握指针、地址、实参到形参的传递过程。
知识点总结:①实参到形参数值传递的过程是单向,形参和实参都会单独开辟内存空间,在传值交换函数myswap1中交换后只是x和y 的值交换了。但这样的变化并不会影响不在同一个储存单元的a和b,实现不了a和b的交换。
②传地址的交换函数myswap2.在调用myswap2函数时,已经把整数a和b 的地址作为实参传递给形参。在函数具体实现过程中也是对地址所指向的内存单元的内容进行交换,能实现a和b的交换。
③对于以引用做形参的函数myswap3.就是一个内存空间有两个名字,在myswap3函数中对x和y的交换即是对a和b的交换,能实现a和b的转换。