我在一家公司接受采访,他们问我“C中空指针的应用是什么”?我告诉他们空指针是什么以及它如何导致分段错误。然而,他们对答案并不满意。我以前从未听过这样的话。如果有人有任何想法,请分享。
谢谢
答案 0 :(得分:3)
他们在询问您何时需要使用NULL指针,而不是在它们导致问题时。
经典的答案是,在没有什么可指的时候使用它们。例如,当列表的结尾时列表中的下一个指针 - >没有下一个项目。
等等你的代码
if(nextItem != NULL)
{
// do stuff with nextItem
}
else
{
// the end
}
正如mooseboy指出的那样,这是一个哨兵值,即你的代码认为具有决定价值的特殊值。
NULL是完美的指针sentinel,因为假定NULL永远不是指针的有效值(例如,你不能使用0x000042,因为42可能是真正的地址)
答案 1 :(得分:-3)
这个问题有点模糊,但他们可能不满意的一件事是,从纯语言的角度来看,解除引用NULL
并不保证会导致段错误。它会导致未指定的行为,即语言没有说明会发生什么。在大多数平台上,是的,null引用会导致段错误,但C的实现可以执行其他操作并且仍然符合标准。