Xor C代码 - 需要解释说明

3

请问有人能够解释一下下面代码中的 XOR(^) 到底是什么意思,以及为什么这个函数是一个指针吗?

char *strReverse(char *str)
{
      char *pb, *pe;

      for (pb = str, pe = str + strlen(str) - 1; pe > pb; ++pb, --pe)
      {
            *pb ^= *pe;
            *pe ^= *pb;
            *pb ^= *pe;
      }
      return str;
}

3
请注意,使用std::swap会表现更好。这篇文章介绍了如何使用异或操作来交换两个变量的值。但是需要注意的是,使用 C++ 中的 std::swap 函数能获得更好的性能。 - chris
3
异或运算技巧是一种愚蠢的技巧(除了让代码难以阅读,没有任何其他好处),用于在不使用额外变量的情况下交换两个值。 - Martin York
我看到了那个技巧,感到很好奇,但还是谢谢你告诉我你的意见。虽然这是一个不错的技巧,但它只适用于正整数。 - Bogdan Maier
2个回答

3

该函数不是指针,而是返回一个char*

该函数用于反转字符串。

XOR技术用于在没有额外内存的情况下交换两个元素。如您所见,循环迭代字符串的开头和结尾,并交换两个char


@LokiAstari 我知道有一个更合适的术语! - Luchian Grigore

1

使用异或操作可以在不使用临时变量的情况下交换内存中的两个值。我推荐参考位运算技巧学习其他位运算技巧。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接