为什么注释的那句话会报错
1 #include <stdio.h> 2 #include <stdlib.h> 3 typedef struct itree{ 4 int node; 5 itree* leftTree; 6 itree* rightTree; 7 }*Tree; 8 int main(int argc, char *argv[]) 9 { 10 Tree a; 11 a->leftTree = (Tree)malloc(sizeof(Tree));//这么写为什么是错的 12 13 return 0; 14 }
a是一个指针 a自己是野指针 应该先自身malloc一块itree空间 再malloc它自己里面的变量
那为什么能给a->node赋值
@ithan: Tree a,这个语句之后,a是一个结构体吗?还是一个指针?C的语法忘得差不多了。
但如果真像你说的a->node是可以赋值的,那你改成
a->leftTree = &(Tree)malloc(sizeof(Tree))试试
@ithan: 即便你能赋值 a本身也是野指针 这是它的本质 不对其给予内存空间就操作其成员 这个做法本身就是错的 而之所以node能赋值 是编译器的处理缘故
Tree a = 0x304df678;
a->leftTree = (Tree)malloc(sizeof(Tree));