表达式node.next->prev
的计算结果是否与node->next->prev
相同?
在C中,node.next->prev
和node->next->prev
中的至少一个不会编译。
如果node
被声明为指向结构的指针(例如struct Node* node
),那么您就不能在其上使用.
运算符,因为.
仅可用于诚实[ C0],而不是指向它们的指针。在这种情况下,struct
不会编译,而node.next->prev
会编译。相反,如果将node->next->prev
定义为实际的诚实node
(例如struct
),则struct Node node
将不会编译,因为node->next->prev
仅可用于指针,而->
会。
话虽这么说,这两段代码后面的intent是相同的。它们都表示“去某个节点,选择其node.next->prev
字段,然后读取任何节点的next
字段。”