2012-05-04 127 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其他位惡作劇