swap

错误版本:只是交换了两个指针本身的值

swap(&x, &y);
void swap(int *a, int *b) {
	int *t;
	t = a;      // t 现在存储了 a 的值,即 x 的地址
	a = b;      // a 变成了 b 的值,即 y 的地址
	b = t;      // b 变成了 t 的值,即 x 的原始地址
}

正确版本

swap(&x, &y);
void swap(int *a, int *b) {
	int t = *a; // 保存 a 指向的值
	*a = *b;    // 将 b 指向的值赋给 a 指向的位置
	*b = t;     // 将 a 原来的值赋给 b 指向的位置
}