#include <stdio.h> #define swap(t,a,b) / /* 使用宏来完成两个同类型变量的交换 */ {/ *(t *)a = *(t *)a^*(t *)b;/ *(t *)b = *(t *)a^*(t *)b;/ *(t *)a = *(t *)a^*(t *)b;/ } void swap1(int *a, int *b) { *a = *a^*b; *b = *a^*b; *a = *a^*b; } void swap2(void *a, void *b) { *(int *)a = *(int *)a^*(int *)b; *(int *)b = *(int *)a^*(int *)b; *(int *)a = *(int *)a^*(int *)b; } int main() { int a = 30, b = 4000; printf("a = %d/nb = %d/n", a, b); /*swap1(&a, &b);*//* this is also ok to swap two integer number*/ swap2((void *)&a, (void *)&b); /*swap(int, &a, &b);*//* works well */ printf("a = %d/nb = %d/n", a, b); return 0; }