typedef struct node{
char data;
struct node *left;
struct node *right;
}Node, *Tree;//Node为别名,*Tree为结构体指针
Tree create_tree(){
Node *root = NULL;//root指针指向Node型变量,变量的值为NULL
char ch;
scanf("%c", &ch); // 输入 ABD##E##C##
if (ch != '#'){
//(Node*为强制类型转换)
root = (Node*)malloc(sizeof(Node));//开辟动态存储区,将地址转换为Node*类型,后放在root中
root->data = ch;//将获取输入的数据ch赋给root中的data字符型变量
root->left = create_tree(); // 递归创建
root->right = create_tree();
}
else{
root = NULL;
}
return root;
}
这里的Tree不是指针吗?为什么Tree能够直接定义函数create_tree()?Tree去掉" * "之后代表的是什么?
你将第七行的Tree换成Node ,程序也不会报错。
经过查询得知,Tree其实是typedef node* Tree,也就是说你为结构体的指针定义了一个别名,而这个指针的别名为Tree,而并不是定义了一个结构体指针。定义结构体指针应该另起一行,不能在typedef里进行定义。