2012-05-04 2 views
3

может кто-нибудь объяснить мне, что XOR, (^) делает в сводном коде exaclly и как получилась функция указатель?Xor c code - требуется объяснение

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 trick - это глупый трюк (который не дает вам ничего, кроме нечитаемого кода) для замены двух значений без использования дополнительной переменной. –

+0

ну, я видел, что трюк и я были любопытными, но танк вас за то, что вы сказали мне, что вы думаете, что это хороший трюк ... но он работает только для + ints –

ответ

3

Функция не указатель, но возвращает char*.

Функция меняет строку.

Этот метод XOR используется для замены двух элементов без дополнительной памяти. Как вы можете видеть, цикл выполняет итерацию через начало и конец строки и свопирует два значения char.

+0

aham thank you !, так что я гость все :)) –

+0

@BogdanMaier нп. –

+0

@ LokiAstari Я знал, что есть более подходящий термин! –

1

с использованием xor, как это по-другому, для замены двух значений в памяти без использования временной переменной. Я рекомендую bit hacks для других бит-хаков

Смежные вопросы