【发布时间】:2011-09-05 08:41:35
【问题描述】:
我一直认为只需 if(p != NULL){..} 就可以完成这项工作。但是看了this Stack Overflow question,好像没有。
那么在吸收该问题中的所有讨论之后检查 NULL 指针的规范方法是什么,该问题说 NULL 指针可以具有非零值?
【问题讨论】:
-
那不是 c...这是一个 c++ 线程...就个人而言,我会选择:
if(p) {...} -
您太担心了——您的代码很好,即使在 C++ 中也是如此。那次讨论是在一些语言律师之间进行的——有点像“多少天使可以在一根针头上跳舞”的东西。
-
@cpuer 不,他们不会,因为他们没有使用内部代表 - 你的代码很好!这是所有 C 代码和所有 C++ 代码的编写方式——该线程是关于 C++ 标准措辞的抽象智力讨论。你在 C++ 标签上得到了很多。
-
-
为了让问题更清晰:
NULL是一个宏,在<stddef.h>(和其他一些标头)中定义。NULL不是空指针;它需要被定义为“空指针常量”(在 C++ 中,它不能是指针,而在 C 中,传统上不是指针)。必须处理三个独立的概念:NULL、空指针和空指针常量。并且空指针的物理表示方式(其位模式)完全独立于其他两个。
标签: c null-pointer