C语言用 typedef 定义结构体问题

typedef struct ChildNode
{
int child;
struct ChildNode *next;
}ChildNode;

前面struct后的ChildNode加与不加有什么区别

给该结构体定义一个别名,当需要创建该结构题的时候直接用ChildNode代替类型即可,不用多写个struct

加了以后使用这个结构体可以直接用ChildNode来定义,就是方便使用而已

ChildNode test1;
struct ChildNode test2;
这两个是一样的效果

这两个地方一般写得不一样的,比如前面一般会加一个 _,写成 _ChildNode。
C 语言经常要求使用类型时加上 struct,比如:
struct _ChildNode * node;
用了 typedef 定义的类型名称,就不需要 struct 了,比如:
ChildNode * node;
如果不需要前面那种形式,struct 后面的名称是可以去掉的。