这两段怎么理解

atnice 2010-06-27 02:26:08
首先是这断程序:
#include <iostream>
using namespace std;
int main()
{
int a=3,b=4;
cout<<"main函数中,交换前"<<"a="<<a<<endl<<"b="<<b<<endl;
swap(a,b);
cout<<"main函数中,交换后"<<"a="<<a<<endl<<"b="<<b<<endl;
return 0;
}
void swap(int a,int b)
{
int c;
cout<<"swap函数中,交换前"<<"a="<<a<<endl<<"b="<<b<<endl;
c=a;
a=b;
b=c;
cout<<"swap函数中,交换后"<<"a="<<a<<endl<<"b="<<b<<endl;
}
在这段代买中,a和b的值确实交换了,但是swap函数中的cout语句怎么没有执行?


然后是这一段程序:
#include <iostream>
using namespace std;
void swap(int a,int b)
{
int c;
cout<<"swap函数中,交换前"<<"a="<<a<<endl<<"b="<<b<<endl;
c=a;
a=b;
b=c;
cout<<"swap函数中,交换后"<<"a="<<a<<endl<<"b="<<b<<endl;
}
int main()
{
int a=3,b=4;
cout<<"main函数中,交换前"<<"a="<<a<<endl<<"b="<<b<<endl;
swap(a,b);
cout<<"main函数中,交换后"<<"a="<<a<<endl<<"b="<<b<<endl;
return 0;
}
在这段程序中,swap函数中的cout语句执行了,但是最终main函数中的a和b没有被交换,查了资料这是按值传递的结果,只要改成改址传递或按别名传递就行。
那么我的疑问就是:
1、第一段程序中是按什么传递的?
2、第一段程序中,为什么swap函数中的cout语句没有执行?
3、还有一个小疑问,C++不是规定要先定义,才能使用的吗,那么第一段程序中的swap函数没有定义怎么就可以使用了?编译时没有报错。


初学者,很多不懂,望高手赐教。先谢过了。
...全文
93 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liutengfeigo 2010-06-27
  • 打赏
  • 举报
回复
加好友吧,以后多交流
atnice 2010-06-27
  • 打赏
  • 举报
回复
兄弟,大半夜的,辛苦你了,确实库中有这个swap函数。
liutengfeigo 2010-06-27
  • 打赏
  • 举报
回复
楼主记得结贴,2点29帮你回答也痛苦啊。
liutengfeigo 2010-06-27
  • 打赏
  • 举报
回复

世界杯时间到了。
liutengfeigo 2010-06-27
  • 打赏
  • 举报
回复
1.其实你调用标准库的函数了,标准库有个swap函数。。
2.和1一样。
3.和1一样.
你把所有的swap改成swap1试试就知道为什么了。

64,676

社区成员

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

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