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

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/b954960630/article/details/53453545

问:

  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!

展开阅读全文

没有更多推荐了,返回首页