关于swap(int *p,int *q)的问题

C++语言 码拜 9年前 (2015-11-12) 828次浏览
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)的时候,具体传递的是什么?
解决方案: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这些头文件都注释掉,会出现编译错误吧?

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于swap(int *p,int *q)的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)