首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-03-01 
关于swap(int *p,int *q)的问题void swap(int *p,int *q){int *temptempppqqtemp}int main(void){i

关于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;
}

[解决办法]
swap(a,b);
这句调用的应该是c++标准库的swap函数。
而不是楼主自己实现的swap

把iostream、algorithm这些头文件都注释掉,会出现编译错误吧?

热点排行