引用函数声明的位置会影响到主函数?

Yanger_xy 2009-01-05 08:05:28
#include <iostream>
using namespace std;
void swap(int&,int&);//如果放在里面声明就不行了!为何 ?
int main( )
{
int i=3,j=5;
cout<<"交换前:"<<endl;
cout<<"i="<<i<<" "<<"j="<<j<<endl;
swap(i,j);
cout<<"交换后:"<<endl;
cout<<"i="<<i<<" "<<"j="<<j<<endl;
return 0;
}
void swap(int&a, int&b) //形参是引用类型
{
int temp;
temp=a;a=b;b=temp;
}
___
...全文
88 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liberpc 2009-01-08
  • 打赏
  • 举报
回复
报的什么错?
wwf06802136 2009-01-08
  • 打赏
  • 举报
回复


#include <iostream>
using namespace std;
void swap(int&a, int&b) //形参是引用类型
{
int temp;
temp=a;a=b;b=temp;
}
int main( )
{
int i=3,j=5;
cout < <"交换前:" < <endl;
cout < <"i=" < <i < <" " < <"j=" < <j < <endl;
swap(i,j);
cout < <"交换后:" < <endl;
cout < <"i=" < <i < <" " < <"j=" < <j < <endl;
return 0;
}
将函数放在主函数前面就可以不先声明void swap(int&,int&);否则一定要先声明
alexdboy 2009-01-08
  • 打赏
  • 举报
回复
1. 请问什么叫“放在里面声明”。是指在主函数里声明吗?
在函数里声明函数不是不行,但尽量不要这么做。

2. 请问你的编译环境是什么。不同的编译环境中的头文件的内容可能会有差异,从而导致你的朋友的机器上结果是正确的。
你使用了“using namespace std; ”,这样就会有std::swap函数候选,就算你不声明、定义自己的swap函数,你的这段程序也可以执行通过。
Yanger_xy 2009-01-08
  • 打赏
  • 举报
回复
不报错! 如果在外面声明的话,结果是" 交换前:i = 3, j = 5, 交换后: i = 5, j = 3"
但是如果放在里面声明结果却是 "交换前: i = 3, j = 5, 交换后: i = 3, j = 5"!
没有交换过来!
我用QQ问过其他的人,他说在他的机器上编译结果却能交换过来1!!!
莫非这也跟机器有关?!!!
真搞不明白!
还请各位大狭指教....
小生有礼了...

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧