if语句分段错误

时间:2016-12-01 00:17:29

标签: c segmentation-fault

我正在检查指针是否存在,如果它确实存在,那么它不会指向NULL /零值。我的代码如下所示:

if (prior != NULL && *prior){
  //do something
}

先前是指针。但是,我在*prior上遇到了分段错误。但我不明白这是怎么回事。如果previous是NULL指针,则if语句应该短路,因此* previous应始终有效。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

if (prior != NULL && *prior){
    //do something
}

段错误的原因多于解除引用NULL指针。指针可能不是NULL,但如果你是一个无效或悬挂的指针,你的程序仍然可能是段错误。

重温这个关于指针的众所周知的答案:Can a local variable's memory be accessed outside its scope?

这也解释了为什么指针可以是非NULL但仍然无效。