关于C#:结构标签与花括号后面的内容有什么区别?

What's the difference between the structure tag and what comes after the curly brace?

本问题已经有最佳答案,请猛点这里访问。

有人能给我解释一下这段代码吗?

1
2
3
4
5
6
7
8
typedef char AirportCode[4];

typedef struct NodeTag{
  AirportCode Airport;
  struct NodeTag *link;
}Node;

Node *L;

这是我的数据结构类中的一段代码。实现这段代码是为了在LinkedList节点中保存数据。我想了解的是,nodetag通常是用来做什么的?当你想让结构保持另一个迭代,因为缺乏一个更好的词,结构本身?nodetag和花括号后面的内容有什么区别,在本例中是"node"?


你把两件事结合在一起:

(1)结构声明:

1
2
3
4
struct NodeTag{
  AirportCode Airport;
  struct NodeTag *link;
};

这需要您像这样声明您的节点:

1
struct NodeTag *nt;

结构定义的右大括号之后的任何内容都将声明该类型的变量。

1
struct foo {int n;} a_global_variable;

有(2)个typedef

1
typedef ... Node;

你可以简单地说:

1
Node *n;

但是,在结构声明中,由于typedef还不存在,所以必须说struct NodeTag *nt而不是Node *n