我在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
成员),因为指针的大小不取决于指针的类型。