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

交换两个数

2016-05-23 19:19 260 查看
交换两个数的方法现阶段看到的有4种进行一个小结

1、使用指针的方式;

2、使用引用;

3、使用异或运算符(原理为异或运算符的结合律);

4、使用+-运算符;

其中后两种方法是不需要引入中间变量的方法。

#include<iostream>

using namespace std;
//1、使用指针进行交换
void swap1(int* a,int* b)
{
int temp = *a;//这里不能改为int* temp否则出错
*a = *b;
*b = temp;
}

//2、使用引用交换
void swap2(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
}
//3、使用异或交换
void swap3(int &a, int &b)
{
a = a^b;
b = a^b;
a = a^b;
}
//4、使用+-进行交换
void swap4(int &a, int &b)
{
a = a + b;
b = a - b;
a = a - b;
}
//5、交换两个指针的指向
void swap_ptr(int **a, int **b)
{
int *temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int a = 0; int b = 2;
//swap1(&a, &b);
//swap2(a, b);
//swap3(a, b);
//swap4(a, b);

int *pa = &a;
int *pb = &b;
swap_ptr(&pa, &pb);
cout << a << b << endl;
cout << pa << "\t" << *pa << endl;
cout << pb << "\t" << *pb << endl;

system("pause");
return 0;
}


使用异或的原理:

(1)a=a^b;

执行结束后a中为a^b

(2)b=a^b;

等价于a^b^b根据结合律可知a^0=a;

执行结束后b中为a;

(3)同理执行结束后a和b中的内容进行了交换
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++语言基础