首页  >  文章  >  后端开发  >  您应该在 C/C 中显式检查 NULL 指针吗?

您应该在 C/C 中显式检查 NULL 指针吗?

Susan Sarandon
Susan Sarandon原创
2024-10-31 02:03:29118浏览

Should You Explicitly Check for NULL Pointers in C/C  ?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn