关于C语言的交换函数

swap1(data[min],data[max]);

要实现上面这个,将同一个数组中的两个值交换,,swap函数该怎么写啊,同一个数组的话,参数同就不会了。。求大佬解答。

本蒟蒻只会写三种,望大佬采纳。

第一种:

template<typename T>
void swap(int *a, int *b) {
    int *tmp = *a;
    *a = *b; *b = *tmp;
} 


第二种:

template<typename T>
void swap(int *a, int *b) {
    *a = *a + *b; *b = *a - *b; *a = *a - *b;
}

第三种:
 

​template<typename T>
void swap(int *a, int *b) {
    *a = *a ^ *b; *b = *b ^ *a; *a = *a ^ *b;
}