短路与/或的常用谬误–空指针错误

短路与/或的常用谬误–空指针错误

之前做一个数据结构作业写链表插入函数的时候,在链表表尾插入的地方会出现runtime error

研究了一会发现问题出现在了没注意好使用短路或

我在判断 链表指针指向的下一个结点是否为空 其值是否大于某个值x的时候

一开始使用了语句  p -> next -> info > x || p -> next == NULL

实际上若指针指向的下一个节点为空,则该语句“或”之前的 p -> next -> info > x 中 p -> next -> info是无法访问的,也即出现 空指针错误

为了避免出现空指针错误,应当首先判断下一结点是否为空,即将判断语句写成 p -> next == NULL || p -> next -> info > x

这样, 即使空指针不能访问其值,但由于短路或的原理,在确认 p -> next == NULL为真后就判断整条语句为真,无需判断“或”右边的语句,不会出现空指针错误

 

3+
Rhett Peng

软件工程大三在读学生,用个人网站记录学习动态

说点什么

avatar