交换两个数
2016-05-23 19:19
260 查看
交换两个数的方法现阶段看到的有4种进行一个小结:
1、使用指针的方式;
2、使用引用;
3、使用异或运算符(原理为异或运算符的结合律);
4、使用+-运算符;
其中后两种方法是不需要引入中间变量的方法。
使用异或的原理:
(1)a=a^b;
执行结束后a中为a^b
(2)b=a^b;
等价于a^b^b根据结合律可知a^0=a;
执行结束后b中为a;
(3)同理执行结束后a和b中的内容进行了交换
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++例程20150818-001
- 【C++】基础知识—与C语言关系、命名空间
- 形参、局部(非静态)变量和静态局部变量的差别
- 华为2014机试
- More Effective C++ 阅读笔记(六)--哪些运算符不能重载
- 实习之路漫漫
- luogu P1525 关押罪犯
- C++之类中的函数重载
- c++概念性知识点之初始化,声明和定义
- Openjudge 题解01~05 C++
- c++里的const
- 开始学习C++
- C++作业6
- C++ 标准函数库 —— 文件的输入输出 (Input/Output with files)
- C++ 高级篇(五)—— 预处理指令
- C++ 停止并禁用服务
- C++ 高级篇(四)—— 类型转换高级
- C++ 高级篇(三)—— 出错处理
- 基于arm的C++反汇编 函数的工作原理
- c++数组实现循环队列