相关代码:
if(p == NULL){
printf("p is null\n");
}
if(p->lchild == NULL){
printf("p lchild is null\n");
}
在 p->lchild == NULL
出现段错误。
调试之后发现,是因为声明结构体之后,结构体并不会自动为指针置空,如果分配的内存有数据,就会使得结构体中有默认的随机数据。
解决方法,使用 memset
等手段手动清空结构体。
memset(&r1, 0, sizeof(a1));