首页 > 解决方案 > 在 C 中,node.next->prev 是否​​与 node->next->prev 相同?

问题描述

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

标签: cpointerssyntax

解决方案


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

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

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


推荐阅读