有人可以为我解释这段代码吗?
typedef char AirportCode[4];
typedef struct NodeTag{
AirportCode Airport;
struct NodeTag *link;
}Node;
Node *L;
Run Code Online (Sandbox Code Playgroud)
这是我的数据结构类的代码片段.实现这段代码是为了在链表节点中保存数据.我想要了解的是NodeTag通常用于什么?是否希望结构在其内部保持另一个迭代,因为缺少更好的单词?NodeTag与大括号之后的内容有什么区别,在本例中为"Node"?
你在这里把两件事合二为一:
(1)结构声明:
struct NodeTag{
AirportCode Airport;
struct NodeTag *link;
};
Run Code Online (Sandbox Code Playgroud)
这需要你像这样声明你的节点:
struct NodeTag *nt;
Run Code Online (Sandbox Code Playgroud)
结构定义的结束大括号之后的任何内容都将声明该类型的变量.
struct foo {int n;} a_global_variable;
Run Code Online (Sandbox Code Playgroud)
用(2)a typedef:
typedef ... Node;
Run Code Online (Sandbox Code Playgroud)
这让你简单地说:
Node *n;
Run Code Online (Sandbox Code Playgroud)
但是,在struct声明中,由于typedef尚不存在,你仍然必须说struct NodeTag *nt而不是 Node *n