void swap(int *p,int *q)
{
int *temp;
temp=p;
p=q;
q=temp;
}
int main(void)
{
int a=1,b=2;
swap(a,b);
cout<<a<<” “<<b<<endl;
return 0;
}
在main中使用如上所示的时候,可以实现数据交换,但是使用swap(&a,&b)的时候,则不能。
请问,为什么,当使用swap(a,b)的时候,具体传递的是什么?
{
int *temp;
temp=p;
p=q;
q=temp;
}
int main(void)
{
int a=1,b=2;
swap(a,b);
cout<<a<<” “<<b<<endl;
return 0;
}
在main中使用如上所示的时候,可以实现数据交换,但是使用swap(&a,&b)的时候,则不能。
请问,为什么,当使用swap(a,b)的时候,具体传递的是什么?
解决方案:10分
原因在于你的swap写错了:
#include <iostream> using namespace std; void swap(int *p,int *q) { int temp; temp=*p; *p=*q; *q=temp; } int main(void) { int a=1,b=2; swap(&a,&b); cout<<a<<" "<<b<<endl; return 0; }
解决方案:10分
swap(a,b);
这句调用的应该是c++标准库的swap函数。
而不是楼主自己实现的swap
把iostream、algorithm这些头文件都注释掉,会出现编译错误吧?
这句调用的应该是c++标准库的swap函数。
而不是楼主自己实现的swap
把iostream、algorithm这些头文件都注释掉,会出现编译错误吧?