C/C 中的 NULL 指针检查:方法比较
在代码审查中,经常会出现 NULL 指针检查的主题。一位贡献者主张使用与 NULL 的显式比较:
int * some_ptr; // ... if (some_ptr == NULL) { // Handle null-pointer error } else { // Proceed }
另一方认为,通过在 if 语句中使用指针变量隐式检查 NULL 同样清晰:
int * some_ptr; // ... if (some_ptr) { // Proceed } else { // Handle null-pointer error }
This出于多种原因,优选后一种方法。首先,它避免了引入逻辑错误的风险,例如将 NULL 分配给指针变量而不是比较它:
if (some_ptr = NULL)
其次,它与 C 类兼容,如 unique_ptr、shared_ptr 和 auto_ptr指针,但提供布尔值转换。与 NULL 的显式比较需要转换为指针,这可能会产生副作用或效率较低。
与 NULL 的显式比较不必要地冗长,并会带来潜在的混乱。 C 语言明确指出布尔上下文中的非零值是 true,零值是 false。对 NULL 使用隐式检查清晰简洁,表达了代码的意图,没有多余的特异性。
以上是您应该在 C/C 中显式检查 NULL 指针吗?的详细内容。更多信息请关注PHP中文网其他相关文章!