C中检查指针是否为空的有效方法

C中检查指针是否为空的有效方法,c,C,检查指针是否为空(如果此检查存在于快速代码路径中的函数中)的最有效方法是什么?期望同样的效率是合理的 if (!p) if (p == NULL) if (p == 0) if (NULL == p) // Jedi comparison if (0 == p) // Jedi comparison 在任何合理的编译器上编译为相同的代码。信用证:@威尔 绝地比较确实抓住了==当==是预期的信用:@Sanyam Goel 我和其他人发现通常的ifp==。。。更容易阅读。信用证:@H2C

检查指针是否为空(如果此检查存在于快速代码路径中的函数中)的最有效方法是什么?

期望同样的效率是合理的

if (!p)
if (p == NULL)
if (p == 0)
if (NULL == p)  // Jedi comparison
if (0 == p)     // Jedi comparison
在任何合理的编译器上编译为相同的代码。信用证:@威尔

绝地比较确实抓住了==当==是预期的信用:@Sanyam Goel 我和其他人发现通常的ifp==。。。更容易阅读。信用证:@H2CO3 在我的书中,维护胜过发展。出于这个原因,我倾向于选择p==NULL,因为它最清楚地表达了,IMHO,正在测试的内容


虽然这个问题很基本,但我认为它应该得到一个完整的答案。但上述讨论值得称赞。大多数程序员可能会在某个时候思考这个问题。

如果ptr==NULL如果ptr在我看来更好,效率更高,因为它节省了输入。如果p==NULL,如果p==0,如果!无论如何,p都将在任何合理的编译器上生成相同的代码。选择您喜欢的外观。@H2CO3将右值与左值进行比较可防止意外赋值,因为如果==运算符中缺少一个=,则会产生编译时错误,否则会导致无限循环@SanyamGoel我发现p==NULL更容易阅读,我使用-Wall-Wextra进行编译。我认为绝地武士的比较对我没有任何意义: