您的位置:首页 > 编程语言 > C语言/C++

C++交换两个数的值

2015-05-19 11:12 316 查看

C++交换两个数的值

需要临时变量

(1).使用引用(引用即别名)

void swap1(int &a, int &b)
{
int k;
k = a;
a = b;
b = k;
}


函数时的格式:swap1(x,y)

(2). 指针

void swap2(int *a, int *b)
{
int k ;
k = *a;
*a = *b;
*b = k;
}


调用该函数时的格式:swap2(&x,&y)

2.不需要临时变量

(1).假如 a = 3,b = 4。想将a和b的值互换,可以用一下赋值语句实现:

有一个陷阱:
int swap(int * a,int * b){
if(a==b)//需要加入判断a指针与b指针相同的情况(细节)
return -1;
a = a ^ b;
b = b ^ a;
a = a ^ b;
return 0;
}


下面用竖式进行简单说明:(10进制化为二进制)

a = 011

(^) b = 100

则 a = 111(a ^ b的结果赋值给a,a已变成了7)

(^) b = 100

则 b = 011(b^a的结果赋给b,b已经变成了3)

(^) a = 111

则 a = 100(a^b的结果赋给a,a已经变成了4)

(2).

a = a + b;
b = a - b;
a = a - b;


总结:位运算比加减快,当然任何互逆的运算都是可以的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++基础