C/C++语言的点滴(一) 实现两个任意类型的数据的交换

C语言中没有C++的模板,因此我在实现两种任意类型的数据的交换时是使用预定义的方式

主要使用两种方法

1、使用加和减

#define swap(x,y) {x+=y;y=x-y;x=x-y;}

2、使用异或的方法

#define swap(x,y) {x^=y;y=x^y;x=x^y;}

原理基本一样   一中 y=x-y=(x+y)- y = x; x = (x +y)-x=y

1.2中有一个地方需要注意,x和y的地址不可以相同,就x,y不可以是同一个变量,如果是同一个变量则会使x变为0.

例如:

int a=20;

swap(a,a);

这是a的值会变为0.

C++中使用模板实现

template <class T>

void swap(T *x,T *y){

T temp;

temp=*x;*x=*y;*y=temp;

}

 

原文地址:https://www.cnblogs.com/cody1988/p/2162295.html