C++交换两个值的三种方法

第一种:利用指针进行交换

#include
#include
#include
using namespace std;
void swap(int *a, int *b){
  int p;
  p = *a;
  *a = *b;
  *b = p;
}
int main(int argc, char const *argv[])
{
  int a = 3, b = 2;
  swap(a, b);
  printf("%d %d\n", a, b);
  return 0;
}

第二种:使用位运算进行交换

#include
#include
#include
using namespace std;
void swap(int &a, int &b){
  a ^= b ^= a ^= b;
}
int main(int argc, char const *argv[])
{
  int a = 3, b = 2;
  swap(a, b);
  printf("%d %d\n", a, b);
  return 0;
}

第三种:使用加减法进行交换

#include
#include
#include
using namespace std;
void swap(int &a, int &b){
  a = a + b;
  b = a - b;
  a = a - b;
}
int main(int argc, char const *argv[])
{
  int a = 3, b = 2;
  swap(a, b);
  printf("%d %d\n", a, b);
  return 0;
}

 

你可能感兴趣的:(基础算法,加减交换,位运算交换,指针交换)