2012-05-04 95 views
3

有人能解释我XOR,(^)在休闲代码中的作用,以及函数如何来作为指针?XOR C代码 - 需要说明

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

http://betterexplained.com/articles/swap-two-variables-using-xor/。请注意,使用'std :: swap'会更好。 – chris

+3

xor技巧是一个愚蠢的技巧(除了不可读的代码之外,它不会为您带来任何益处)可以在不使用额外变量的情况下交换两个值。 –

+0

嗯,我看到了这个把戏,我是古董,但坦克你告诉我你的意见altought这是一个很好的伎俩......但它适用于+整数 –

回答

3

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

函数反转一个字符串。

这个XOR技术用于交换两个元素,没有任何额外的内存。正如你所看到的,循环迭代了字符串的开始和结束,并交换了两个字符串。

+0

aham谢谢你,所以我客人的一切:)) –

+0

@BogdanMaier NP。 –

+0

@LokiAstari我知道有一个更合适的术语! –

1

像这样使用xor是一种不同的方法,用于在不使用临时变量的情况下交换内存中的两个值。我建议bit hacks其他位恶作剧