typedef struct ListNode{
int key;
ListNode* next;
}ListNode,pListNode;
上面编译无问题,下面的写法有问题;
typedef struct {
int key;
ListNode* next;
}ListNode,*pListNode;
小结:结构体用typedef起别名还是不能省略struct后面紧跟的结构体名字,否则在成员里面使用别名作类型行不通(但结构体名字和别名可以重复);
另附注:typedef起别名是新定义一个自定义的数据类型,与define有本质的不同(define只是文本替换,起不到和typedef一样覆盖所修饰的变量;还有const修饰和typedef或者define结合是否为不能修改的普通变量值还是指针变量就是例子:https://blog.youkuaiyun.com/zuccysm/article/details/130124261);作用域不同;define的各个参数都需当成一个整体用()括起来避免出错