gpt4 book ai didi

c - c 中带有标识符的结构声明

转载 作者:太空宇宙 更新时间:2023-11-04 05:54:09 25 4
gpt4 key购买 nike

我试图理解这段 C 代码:

typedef struct _IntElem *IntList;
typedef struct _IntElem { int head; IntList tail;} IntElem;

我理解它定义了一个递归类型,一个list。但是我不明白它的声明方式。我理解的是第二行,我们定义了一个名为IntElem的结构,它由一个整数和一个IntList组成。但是这个声明中的 _IntElem 是什么?

第一行为列表分配内存?

最佳答案

  • 第一行

     typedef struct _IntElem *IntList;

只是为 struct _IntElem * 创建一个 typedef 或一个 alias。别名名为 IntList。 FWIW,此时,编译器不需要知道 struct _IntElem 的定义。

  • 第二行

    typedef struct _IntElem { int head; IntList tail;} IntElem;
    1. 实际上定义了一个用户自定义类型_IntElem,有两个成员,headinttailIntList(typedef较早)
    2. typedef IntElem 的类型。

请注意:实际上没有为任何类型 (s) 创建变量(我不是在谈论成员变量,当然,它们是定义的一部分)。因此,没有分配内存。

所以,明确一点

But what is the _IntElem in this declaration?

_IntElem 是用户自定义数据类型的名称。但是,在某些情况下,它是可选的。例如,

typedef struct { char name [32]; int age; float salary;} employee;

既完美又合法,除了事实,在这种情况下,我们正在为 未命名 数据类型创建别名 employee

关于c - c 中带有标识符的结构声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31473433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com