有人可以解释一下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;
}
答案 0 :(得分:3)
该函数不是指针,而是返回char*
。
该函数反转字符串。
这种XOR
技术用于交换两个元素而不需要任何额外的内存。如您所见,循环遍历字符串的开始和结束,并交换两个char
。
答案 1 :(得分:1)
使用像这样的xor是一种不使用临时变量在内存中交换两个值的不同方法。我推荐bit hacks用于其他的黑客攻击