Vc++6.0环境下Swap函数的变化
#include<iostream> using namespace std; void main() { void swap(double&,double&); double a,b; cout<<"请输入两个数a和b:"; cin>>a>>b; swap(a,b); cout<<"a="<<a<<"b="<<b; } void swap(double &x,double &y) { double temp; temp=x; x=y; y=temp; }
运行结果如下:
显示并没有交换。把程序稍微改一下:
#include<iostream> using namespace std; void swap(double&,double&); void main() { double a,b; cout<<"请输入两个数a和b:"; cin>>a>>b; swap(a,b); cout<<"a="<<a<<"b="<<b; } void swap(double &x,double &y) { double temp; temp=x; x=y; y=temp; }
将swap函数声明放在main函数的外面。
为什么声明放在里面没有交换呢?通过调试发现,我们定义的swap函数根本没有执行,而是执行了系统里的同名swap函数,这个函数并没有完成交换的功能。
再把程序改一下:
#include<iostream.h> void main() { void swap(double&,double&); double a,b; cout<<"请输入两个数a和b:"; cin>>a>>b; swap(a,b); cout<<"a="<<a<<"b="<<b; } void swap(double &x,double &y) { double temp; temp=x; x=y; y=temp; }
运行结果如下:
这次完成了交换,这事因为传统的头文件<iostream.h>里并没有包含同名的swap函数。