下面两个函数有什么区别,怎么结果运行不一样啊?swap(&a,&b);swap(a,b);用了分别是什么意思?

#include <iostream>
using namespace std;
void swap(int *a,int *b)
{
int c;
cout<<"swap函数中,交换前,a:"<<*a<<"b:"<<*b<<endl;
c=*a;
*a=*b;
*b=c;
cout<<"swap函数中,交换hou,a:"<<*a<<"b:"<<*b<<endl;
}
int main()
{
int a=3,b=4;
cout<<"zhu函数中,交换前,a:"<<a<<"b:"<<b<<endl;
swap(a,b);
cout<<"zhu函数中,交换hou,a:"<<a<<"b:"<<b<<endl;
return 0;
}

#include <iostream>
using namespace std;
void swap(int *a,int *b)
{
int c;
cout<<"swap函数中,交换前,a:"<<*a<<"b:"<<*b<<endl;
c=*a;
*a=*b;
*b=c;
cout<<"swap函数中,交换hou,a:"<<*a<<"b:"<<*b<<endl;
}
int main()
{
int a=3,b=4;
cout<<"zhu函数中,交换前,a:"<<a<<"b:"<<b<<endl;
swap(&a,&b);
cout<<"zhu函数中,交换hou,a:"<<a<<"b:"<<b<<endl;
return 0;
}

第一个是传得引用,值没有变化
第二个是传得地址,所以值改变了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-24
上面那个调用肯定不对
实参和形成类型不对应
第2个回答  2011-11-24
一个是传值,一个是传址 所以不同。你可以调试单步跟踪一下看看,各个值的变化。这样有助于理解。
第3个回答  2011-11-24
第一个是传得引用,值没有变化
第二个是传得地址,所以值改变了