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

交换数组中的数值有关问题,请大家帮忙看看

2012-02-28 
交换数组中的数值问题,请大家帮忙看看!#include iostreamusingnamespacestdvoidexchange(intx,inty){in

交换数组中的数值问题,请大家帮忙看看!
#include <iostream>
using   namespace   std;

void   exchange(int   x,int   y)
{
int   t=x;
x=y;
y=t;
}

int   main()
{
int   a[2]={1,2};
cout < <a[0] < < "   " < <a[1] < <endl;

exchange(a[0],a[1]);
cout < <a[0] < < "   " < <a[1] < <endl;
return   0;
}

为什么这个exchange函数交换没有成功?
不用指针或引用能否解决这个问题。

[解决办法]
用宏可以,不过那样就不是函数了
[解决办法]
void exchange(int & x,int & y)
[解决办法]
我就想用传值调用,看到书上好多这么写的。

--------------------------------------

传值是不可能交换的,一定要指针或者引用

要不就写宏了 - -!

#define exchange(x, y) {int t = x; x = y; y = t;}
[解决办法]
引用 与地址传值。。
[解决办法]
#define exchange(x, y) {int t = x; x = y; y = t;}
用宏可以实现,但缺点也是很明显的。
比如
exchange(x++, y++)
[解决办法]
void exchange(int &x,int &y)
{
int t=x;
x=y;
y=t;
}

[解决办法]
#include <iostream>
using namespace std;

void exchange(int *px,int *py)
{
int t=*px;
*px=*py;
*py=t;
}

int main()
{
int a[2]={1,2};
cout < <a[0] < < " " < <a[1] < <endl;

exchange(&a[0],&a[1]);
cout < <a[0] < < " " < <a[1] < <endl;
return 0;
}

[解决办法]
宏应该这样写:
#define exchange((x), (y)) {int t = x; x = y; y = t;}

[解决办法]
哦,上面写错了,应该这样:
#define exchange(x,y) {int t = (x); (x) = (y); (y) = t;}

热点排行