首页 新闻 赞助 找找看

关于树的实现中malloc()函数问题

0
[已解决问题] 解决于 2015-05-21 23:06

为什么注释的那句话会报错

 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 }
ithan的主页 ithan | 菜鸟二级 | 园豆:234
提问于:2015-05-20 18:36
< >
分享
最佳答案
0

a是一个指针 a自己是野指针 应该先自身malloc一块itree空间 再malloc它自己里面的变量

奖励园豆:5
jiu~ | 菜鸟二级 |园豆:444 | 2015-05-20 21:58

那为什么能给a->node赋值

ithan | 园豆:234 (菜鸟二级) | 2015-05-20 22:13

@ithan:  Tree a,这个语句之后,a是一个结构体吗?还是一个指针?C的语法忘得差不多了。

但如果真像你说的a->node是可以赋值的,那你改成

a->leftTree = &(Tree)malloc(sizeof(Tree))试试

吴瑞祥 | 园豆:29449 (高人七级) | 2015-05-21 09:21

@ithan: 即便你能赋值 a本身也是野指针 这是它的本质 不对其给予内存空间就操作其成员 这个做法本身就是错的 而之所以node能赋值 是编译器的处理缘故 

jiu~ | 园豆:444 (菜鸟二级) | 2015-05-21 22:46
其他回答(1)
0

Tree a = 0x304df678;

a->leftTree = (Tree)malloc(sizeof(Tree));

Launcher | 园豆:45045 (高人七级) | 2015-05-21 09:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册