之前不太理解,只会这样
#include<stdio.h>
typedef int element;
typedef struct treenode node;
typedef struct treenode{
node* l;
node* r;
element data;
};
void creat_tree(node **p)
{
*p=(node*)malloc(sizeof(node));
(*p)->l;...............//->优先级高于*
}
node *head;
creat_tree(&head);
现在可以
#include<stdio.h>
typedef int element;
typedef struct treenode* node;
typedef struct treenode{
node l;
node r;
element data;
}binode,*bitree;
void creat_tree(bitree *p)
{
*p=(bitree)malloc(sizeof(binode));
(*p)->l;...............
}
bitree head;//等价于node head
creat_tree(&head);
上面有啥区别呢?为啥要区分呢?
第一个c编译器报错= . =
那到底有啥区别?本质上其实木有
用typedef后,binode是个类型名,可以创建变量。此时他代表的是结构体.
同理,bitree也可以创建变量,不过他是定义了一个指向该结构体的指针
如果不用typedef,他只是一个变量名而已。
所以bitree an相当于 struct treenode* an ,也就是 bitree an相当于 node an