在查看XOR链表的实现时,我遇到了这段代码几次,但它们似乎都没有正确解释这一行(或者可能我错过了什么)-
struct node* XOR (struct node *a, struct node *b)
{
return (struct node*) ((unsigned int) (a) ^ (unsigned int) (b));
}
它是如何工作的?(请指出任何以前的答案/评论描述它)谢谢!
除了对指针'a'和'b'所指向的地址执行通常的异或操作
(unsigned int) (a) ^ (unsigned int) (b)
是int到指针的隐式转换(这里是struct node *)使这段代码工作。
(struct node *)(unsigned int someInteger);
编辑:感谢@aruisdante对第二部分的解释!