C++ Xor c代码-需要解释吗

C++ Xor c代码-需要解释吗,c++,xor,C++,Xor,有人能解释一下,XOR、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;

有人能解释一下,XOR、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;
}

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

该函数用于反转字符串


这种异或技术用于交换两个元素,而无需任何额外内存。如您所见,循环遍历字符串的开始和结束,并交换两个
char
s。

像这样使用异或是在内存中交换两个值而不使用临时变量的不同方式。我建议您使用其他位黑客

。请注意,使用
std::swap
会有更好的性能。异或技巧是一个愚蠢的技巧(除了不可读的代码外,它不会为您带来任何好处),可以在不使用额外变量的情况下交换两个值。我看到了这个技巧,我很好奇,但如果您告诉我您的意见,我认为这是一个很好的技巧。。。但它适用于+整数only@LokiAstari我知道有一个更合适的术语!