在查看XOR链接列表的实现时,我多次遇到这段代码,但是他们似乎都没有正确地解释这一行(或者我错过了一些东西) -
struct node* XOR (struct node *a, struct node *b)
{
return (struct node*) ((unsigned int) (a) ^ (unsigned int) (b));
}
它是如何运作的?任何人都可以解释所涉及的演员阵容吗?(请指出任何以前的答案/评论已经描述过)谢谢!
答案 0 :(得分:0)
除了对'a'和'b'指针指向的地址执行的通常XOR
(unsigned int) (a) ^ (unsigned int) (b)
将隐式转换为指针(此处为 struct node * )使得此代码有效。
(struct node *)(unsigned int someInteger);
编辑 :感谢@aruisdante解释第二部分!