读书人

初初学者求教一个小题目

发布时间: 2013-01-01 14:04:18 作者: rapoo

初菜鸟求教一个小题目!
本帖最后由 jsjisweet 于 2012-11-15 21:44:59 编辑 据说是腾讯10年面试题,群里一些大哥哥们分享的!
题目: 以下2个程序是否能是现在两数互换?为什么?

上代码:第一个:


#include <iostream>
using namespace std;
void swap(int *p, int *q)
{
int *temp;
temp=p;
p=q;
q=temp;
}
int main()
{
int a=1,b=2;
swap(a,b);
return 0;
}


第二个:

#include <iostream>
using namespace std;
void swap(int *p, int *q)
{
int *temp;
*temp=*p;
*p=*q;
*q=*temp;
}
int main()
{
int a=1,b=2;
swap(a,b);
return 0;
}

[解决办法]
两个都是不可以的,应该改成这样:

#include <iostream>
using namespace std;
void swap(int *p, int *q)
{
int temp;
temp=*p;
*p=*q;
*q=temp;
}
int main()
{
int a=1,b=2;
swap(&a,&b);
return 0;
}

读书人网 >C++

热点推荐