C语言结构体别名定义问题

时间:2022-07-22 01:43:54

问:

  1. typedef struct Node
  2. {
  3.        int data;
  4.        struct Node *LChild;
  5.        struct Node *RChild;
  6. }BiTNode,*BiTree;

中为什么可以将结构体别名定义为带指针的 *BiTree?而后面定义的root又是什么类型?


答:

C语言给结构体定义别名用 typedef 关键字操作,只有两种情况:

(1)给结构体起一个别名,如:

typedef struct AAA
{  
        ... 

}S;

这就为结构体AAA定义了一个别名S。以后写   S x;   就等价于写   struct AAA x;  了。

                                         对于上例中,写BiTNode root; 就等价于写  struct Node root;

(2)给结构体指针起一个别名,如:

typedef struct AAA{  
    ...  
}*PS;

这就为结构体指针AAA *定义了一个别名PS。以后写   PS pt; 就等价于写struct AAA *pt;    了。

                                                  对于上例中,写 BiTree root; 就等价于写 struct Node *root;

注意这里是用typedef给struct AAA{...} *起一个别名PS,而不是给struct AAA...}起一个别名*PS!