双链表中的一个关于NULL的疑惑
定义这么一个双链表:
struct double
{
int val;
struct double *fwd;
struct double *bwd;
}dou_list;
然后这么使用:
dou_list *root = NULL;
if(NULL == root)
printf("Error\n");
else
printf("%d\n",root->val);
答案当然是输出Error.
但把if里的变一下:
NULL == root->fwd
或者
NULL == root->bwd
程序会发生运行时错误。
小弟想问的就是,当root = NULL时,root里的两个指针到底是怎么赋值的?
[解决办法]
dou_list *root = NULL;
root 也是一个指针,root里没有两个指针,只是当root指向的dou_list类型对象有两个指针成员,当root=NULL时,它不指向对象
[解决办法]
当root = NULL时,就不应该再引用root里的两个指针。
这是C语言的基础,楼主最好是捧一本C语言的书好好钻一钻。
[解决办法]
root是一个 dou_list类型的指针,可以指向 dou_list类型的对象,当指向这类对象时,可操作对象的成员,如上面的int val;
struct double *fwd;
struct double *bwd; 这三个成员,当root=null,不指向对象,当然操作不了dou_list类型的成员