在C ++的早期,当它被拴在C之上时,您不能使用NULL,因为它被定义为(void*)0
。您不能将NULL分配给除以外的任何指针void*
,这使它毫无用处。那时,您已经接受过将0
零指针用于空指针。
直到今天,我仍继续使用零作为空指针,但周围的人坚持使用NULL
。我个人认为将名称(NULL
)赋予现有值没有任何好处-并且由于我也喜欢将指针作为真值进行测试:
if (p && !q)
do_something();
那么使用零会更有意义(例如,如果您使用NULL
,则不能在逻辑上使用p && !q
-您需要与进行显式比较NULL
,除非您假设NULL
为零,在这种情况下,请使用NULL
)。
是否有客观的理由更喜欢零而不是NULL(反之亦然),或者仅仅是个人喜好?
编辑:我应该添加(并最初要说),对于RAII和异常,我很少使用零/ NULL指针,但是有时您仍然需要它们。