关于swap(int *p,int *q)的问题
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)的时候,具体传递的是什么?
[解决办法]
原因在于你的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;
}