指向不存在的结构的指针作为另一个结构中的成员变量是什么意思?

问题描述

我见过这样的 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;
};

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...