·

这里我可以提供两个错误的写法:

void swap_XOR(int* a, int* b) {
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}
void swap_add(int* a, int* b) {
   *a = *a + *b;
   *b = *a - *b;
   *a = *a - *b;
}

当指针a和指针b指向同一个内存时,无论它们共同指向地址是什么数值,最后都将被赋予0

Replies
5

你这俩方法可以的啊,不考虑溢出和类型是没问题的

我感觉这两个方法(不溢出的话),逻辑上应该是可以完成交换;另外,如果故意传同一个地址的话,估计会被队友爆头的吧 (赶紧溜,哈哈哈) joy finally,感谢大佬分享 pray