如何级联->运算符?

How to cascade -> operator?

我有以下内容:

typedef struct Node_struct
{
    int number;
    Node *nextNode;
    Node *prevNode;
} Node;

以后

Node *nodeInSet = lookup(set, number);
nodeInSet->nextNode = (Node *) malloc(sizeof(Node));
nodeInSet->nextNode->prevNode

最后一行说:"expression must have pointer-to-class type"。我看不出我的代码是怎么错的。由于nodeInSet->nextNode是一个Node *,我想我应该允许写nodeInSet->nextNode->prevNode。什么在这里不起作用?

prevNodenextNode成员类型不全,必须这样写

typedef struct Node_struct
{
    int number;
    struct Node_struct *nextNode;
    struct Node_struct *prevNode;
} Node;

typedef struct Node_struct Node;
struct Node_struct
{
    int number;
    Node *nextNode;
    Node *prevNode;
};

原因是您可以将指针声明为不完整的类型,但是如果您尝试取消引用指针,例如使用 -> 运算符,则必须知道类型,因为大小需要的类型。

您可以将代码更改为这个。

typedef struct Node_struct
{
    int number;
    struct Node_struct *nextNode;
    struct Node_struct *prevNode;
} Node;