繁体   English   中英

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

[英]Typedef struct vs struct? |Definition difference|

以下块在main()和每个函数之前(全局范围)

第一块:

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

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

第二块:

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

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

我的问题是为什么 typedef 需要在块的末尾再次写入飞行?

当您声明:

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

你实际上声明了两件事:

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

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

请注意,您可以声明:

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

如果您打算仅使用类型标识符flight则不要使用标签名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM