读书人

双链表中的一个关于NULL的疑惑解决方法

发布时间: 2012-06-19 14:45:20 作者: rapoo

双链表中的一个关于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类型的成员

探讨
引用:

dou_list *root = NULL;
root 也是一个指针,root里没有两个指针,只是当root指向的dou_list类型对象有两个指针成员,当root=NULL时,它不指向对象

当root为NULL时,它里面是不会包括那两个指针吗?

[解决办法]
指针都为空了哪来的东西。。

读书人网 >C语言

热点推荐