c语言--两个整数的交换函数

写一个函数用来交换两个整型变量的值

声明

void swap(int a, int b);

方式1

1
2
3
4
5
6
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}

方式2

1
2
3
4
5
6
void swap(int *a, int *b)
{
int temp = *a + *b;
*a = temp - *a;
*b = temp - *b;
}

方式3

1
2
3
4
5
6
void swap(int *a, int *b)
{
*a = *a + *b;
*b = *a - *b;
*a = *a - *b;
}

方式4

1
2
3
4
5
6
void swap(int *a, int *b)
{
*a = *a - *b;
*b = *a + *b;
*a = *a - *b;
}

方式5

1
2
3
4
5
6
void swap(int *a, int *b)
{
*a = *a ^ *b;
*b = *a ^ *b;
*a = *a ^ *b;
}

方式6

1
2
3
4
5
6
7
void swap(int *a, int *b)
{
*a = *a * *b;
*b = *a / *b;
*a = *a / *b;
}
//这种方法只适合小整数,若数值较大会溢出,且乘除法教对比加减效率要低的多

方式7(通用型的交换,适合各种类型的变量的交换)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//思路:只要把存着两个变量的内存交换,就可以了
void swap(void *a, void *b, int length)
{
void *temp = malloc(sizeof(char) * length);
if(temp == NULL){
fprintf(stderr, "the memory is full!\n");
exit(1);
}
memcpy(temp, a, length); //memcpy函数在string.h中
memcpy(a, b, lengh);
memcpy(b, temp, length);
free(temp);
temp = NULL;
}
Contents
  1. 1. 写一个函数用来交换两个整型变量的值
    1. 1.1. 声明
    2. 1.2. 方式1
    3. 1.3. 方式2
    4. 1.4. 方式3
    5. 1.5. 方式4
    6. 1.6. 方式5
    7. 1.7. 方式6
    8. 1.8. 方式7(通用型的交换,适合各种类型的变量的交换)
,