gpt4 book ai didi

c - Typedef 结构与结构? |定义差异|

转载 作者:太空狗 更新时间:2023-10-29 17:18:25 27 4
gpt4 key购买 nike

以下 block 在 main() 和每个函数之前(全局作用域)

第一 block :

struct flight {
int number;
int capacity;
int passengers;
};

与编写 } var; 相比,您可以创建数组、指针、变量(仅定义此自定义数据类型的一个变量(struct flight))

第二 block :

typedef struct flight {
int number;
int capacity;
int passengers;
} flight;

声明这会创建一个数据类型 flight 而不必一直写 struct flight
我的问题是为什么typedef需要在一个block的末尾写第二次flight?
这有点令人困惑(它看起来只是该数据类型的一个变量)

最佳答案

My question is why typedef needs flight to be written a second time at the end of a block?

当你声明时:

typedef struct flight{
int number;
int capacity;
int passengers;
}flight;

你实际上声明了两件事:

  • 一个新的结构类型struct flight
  • struct flight 的类型别名 flight

带有 typedef 的类型别名像任何普通声明一样出现在声明末尾的原因是由于历史原因 typedef 被放在相同的说明符中类别作为存储类说明符(如 staticauto)。

请注意,您可以只声明:

typedef struct {
int number;
int capacity;
int passengers;
}flight;

如果您打算只使用类型标识符 flight,则不带标签名称。

关于c - Typedef 结构与结构? |定义差异|,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21174020/

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