如何级联 - >运营商?

Utk*_*tku 4 c pointers dereference

我有以下内容:

typedef struct Node_struct
{
    int number;
    Node *nextNode;
    Node *prevNode;
} Node;
Run Code Online (Sandbox Code Playgroud)

然后

Node *nodeInSet = lookup(set, number);
nodeInSet->nextNode = (Node *) malloc(sizeof(Node));
nodeInSet->nextNode->prevNode
Run Code Online (Sandbox Code Playgroud)

最后一行是说:"表达式必须具有指向类的指针".我看不出我的代码是怎么回事.既然nodeInSet->nextNodeNode *,我想我应该被允许写nodeInSet->nextNode->prevNode.什么不在这里工作?

Iha*_*imi 6

prevNodenextNode会员有不完整的类型,你必须把它写这样

typedef struct Node_struct
{
    int number;
    struct Node_struct *nextNode;
    struct Node_struct *prevNode;
} Node;
Run Code Online (Sandbox Code Playgroud)

要么

typedef struct Node_struct Node;
struct Node_struct
{
    int number;
    Node *nextNode;
    Node *prevNode;
};
Run Code Online (Sandbox Code Playgroud)

原因是您可以将poniter声明为不完整类型,但如果尝试取消引用指针,就像使用->运算符一样,那么必须知道类型,因为需要类型的大小.