在 C 中,node.next->prev 和 node->next->prev 是一样的吗?

2 c syntax pointers

表达式的node.next->prev计算结果是否与node->next->prev?

tem*_*def 5

在 C 中,至少有一个node.next->prev并且node->next->prev不会编译。

如果node声明为指向结构的指针(例如,struct Node* node),则不能.在其上使用运算符,因为.只能应用于诚实至善的structs,而不是指向它们的指针。在那种情况下,node.next->prev不会编译,而node->next->prev会。相反,如果node被定义为实际的诚实善良struct(例如,struct Node node),则node->next->prev不会编译,因为->只能应用于指针,而node.next->prev会。

话虽如此,这两段代码背后的意图是相同的。它们的意思都是“去某个节点,挑出它的next字段,然后读取prev任何节点的字段”。