В объявлении struct
за правой скобкой, которая завершает список членов, может следовать список переменных . Итак, здесь
struct node {
char word[MAX];
struct node *left;
struct node *right;
} *Node;
Node
имеет тип struct node *
, который может содержать указатель на любую переменную типа struct node
. Это означает, что если у вас есть
struct node anode;
, вы можете сделать
Node = &anode;
Если у вас есть такая глобальная декларация struct
, за которой следуют переменные после правой скобки, которая завершает список члены, тогда все эти переменные являются глобальными переменными этого struct
типа. Это означает, что если у вас
struct node {
char word[MAX];
struct node *left;
struct node *right;
} Node, *ptrNode;
и этот тип struct node
определен глобально, тогда и Node
, и ptrNode
являются глобальными переменными.
Не путайте это с typedef
. typedef
используется для создания псевдонима для другого типа данных.
Например,
tyepdef struct node {
char word[MAX];
struct node *left;
struct node *right;
} stNode, *ptrStNode;
Теперь stNode
- псевдоним struct node
, а ptrStNode
- псевдоним struct node *
. Это означает, что вы можете использовать их для объявления переменных типа struct node
и struct node*
соответственно.
Для типа struct node
этот
stNode aNode;
совпадает с
struct node aNode;
и для struct node *
типа
ptrStNode ptrNode;
совпадает с
stNode *ptrNode;
аналогично
struct node *ptrNode;
Надеюсь, это поможет.