这两段怎么理解
首先是这断程序:
#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函数没有定义怎么就可以使用了?编译时没有报错。
初学者,很多不懂,望高手赐教。先谢过了。