以下块在 main()
之外且在每个函数(全局范围)之前
第1栏:
struct flight{
int number;
int capacity;
int passengers;
};
使用此方法,您可以创建数组,指针,变量,而不是写入}var
; (仅定义此自定义数据类型的一个变量(struct flight ))
第二块:
typedef struct flight{
int number;
int capacity;
int passengers;
}flight;
声明此操作可创建数据类型航班,而无需始终编写 struct flight
我的问题是为什么typedef需要在一个块结束时第二次写入航班?
这有点令人困惑(它看起来只是该数据类型的变量)
答案 0 :(得分:13)
我的问题是为什么typedef需要在一个块结束时第二次写入航班?
宣布:
typedef struct flight{
int number;
int capacity;
int passengers;
}flight;
你实际上宣布了两件事:
struct flight
flight
的类型别名struct flight
。与typedef
类型别名一起出现在声明末尾的原因与任何普通声明一样是因为历史原因typedef
与存储类说明符放在相同的说明符类别中(例如static
或auto
)。
请注意,您只需声明:
typedef struct {
int number;
int capacity;
int passengers;
}flight;
如果您只想使用类型标识符flight
,则没有标记名称。