我在vc6中写了个交换两数的小程序,使用了引用类型作形参,如下:
#include<iostream>
using namespace std;
void main()
{
int a,b;
void swap(int& x,int& b);//问题就在这
cout<<"Please input two integer:\n";
cin>>a>>b;
cout<<"before swaped"<<endl;
cout<<"a="<<a<<",b="<<b<<""<<endl;
cout<<"swaped"<<endl;
swap(a,b);
cout<<"a="<<a<<",b="<<b<<endl;o
}
void swap(int &x,int &y)
{
int t;
t=x;
x=y;
y=t;
}
运行,输入
3 5
得到的结果是
3 5
3 5//其他我省了
明显错误了嘛
把程序改为
#include<iostream>
using namespace std;
void swap(int& x,int& b);//原型声明放在函数外,这下就对了
void main()
{
int a,b;
cout<<"Please input two integer:\n";
cin>>a>>b;
cout<<"before swaped"<<endl;
cout<<"a="<<a<<",b="<<b<<""<<endl;
cout<<"swaped"<<endl;
swap(a,b);
cout<<"a="<<a<<",b="<<b<<endl;
}
void swap(int &x,int &y)
{
int t;
t=x;
x=y;
y=t;
}
这样能得到正确结果
奇怪了!我想破头也没有想出原因,手头资料又找不到答案,故发在这里,希望各位讨论讨论,共同进步