我在C语言中尝试一些基本的数据结构,很长一段时间后我会回到C语言这是我的“简单”struct

typedef struct
{
    int data;
    LLNode *next; //Error: unknown type name 'LLNode'
}LLNode;

但它给出了一个编译错误,如上图所示是不是因为编译struct编译器没有意识到LLNode的存在?这意味着我必须首先在LLNode之前声明struct是这样吗?如果是,我该怎么做?

最佳答案

这样做:

typedef struct LLNode LLNode;

struct LLNode {
    int data;
    LLNode *next; //No error
};

在定义之前不能使用LLNode类型。
使用此方法,首先声明LLNode的内容即使尚未定义struct LLNode,此声明也足以声明LLNode *成员(但您还不能声明LLNode成员),因为指针的大小不取决于指针的类型。

08-07 03:30