if (!ptr) VS if (ptr == NULL) in C

  • 本文关键字:if ptr in NULL VS c pointers
  • 更新时间 :
  • 英文 :


有时我看到程序员使用:

void *ptr = <something>;
if (ptr == NULL)
    <do something>;

而不是:

void *ptr = <something>;
if (!ptr)
    <do something>;

if (!ptr)有什么可能出现的,还是仅仅是编码样式的偏好?

在C中,它只是一个编码样式的偏好。

有些人更喜欢if (NULL == ptr),其中有一个论点是,如果程序员制作错字(并且将==误认为是A =)编译器将抱怨。但是,许多编译器会发出if (ptr=NULL)的警告(至少最近的GCC DO,当您应作为gcc -Wall -Wextra调用时)。


在C 中(在其中使用nullptr而不是NULL)可能会有区别,因为可以重新定义operator !(例如,在智能指针上)。但是,在Rain Plain指针(例如void*sometype*SomeClass*)上,您不能重新定义诸如!!=的操作员。


顺便说一句,一些怪异的处理器可能具有NULL指针,而不是所有零位机器单词(但是编译器应该处理此问题)。我今天无法在广泛使用中命名任何这样的处理器(但是,认为1980年代的16位x86作为反示例)。

最新更新