问题描述
我见过这样的 C 代码块:
struct Struct1
{
struct Struct2* var;
}
我想知道这个例子中 Struct2
的确切含义是什么。在这段代码中,这是第一次使用名称 Struct2
。
解决方法
类型struct Struct2
是一个不完整类型(前提是在声明结构Struct1之前没有定义结构)。如果需要定义结构,它可以在其他地方定义。但是指向这种类型的指针
struct Struct2 *var;
是一个完整的类型。
例如,您可以通过以下方式声明结构 struct List
struct List
{
struct Node *head;
struct Node *tail;
};
在此声明中,不需要结构 struct Node
的完整定义。结构体 struct List
包含两个指向列表第一个和最后一个节点的指针。
然后在下面的某个地方,甚至在另一个标题中,您可以定义结构 struct Node
,例如
struct Node
{
int data;
struct Node *next;
};