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->nextNode是Node *,我想我应该被允许写nodeInSet->nextNode->prevNode.什么不在这里工作?
在prevNode与nextNode会员有不完整的类型,你必须把它写这样
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声明为不完整类型,但如果尝试取消引用指针,就像使用->运算符一样,那么必须知道类型,因为需要类型的大小.