首页 >后端开发 >C++ >`if (pointer)` 足以检查 C 中指针的有效性吗?

`if (pointer)` 足以检查 C 中指针的有效性吗?

DDD
DDD原创
2024-11-05 07:12:02547浏览

Is `if (pointer)` Enough to Check Pointer Validity in C  ?

检查指针值:if (pointer) 与 if (pointer != NULL)

在 C 中使用指针时,这一点至关重要以确定其有效性。是否可以简单地使用表达式 if (pointer) 来测试指针是否为非 NULL?还是需要显式写if(pointer != NULL)?

答案:

C标准允许你使用if(指针)来测试指针有效性。非空指针隐式转换为 true,而空指针则隐式转换为 false。此行为在 C 11 标准的布尔转换部分中定义:

<code class="cpp">A prvalue of arithmetic, unscoped enumeration, pointer, or pointer to member type can be converted to a
prvalue of type bool. A zero value, null pointer value, or null member pointer value is converted to
false; any other value is converted to true. A prvalue of type std::nullptr_t can be converted to a prvalue of
type bool; the resulting value is false.</code>

因此,您可以安全地编写 if(指针)来检查指针是否为非 NULL。但是,为了清晰和一致,建议适当使用显式的 if (pointer != NULL) 或 if (pointer) 构造。

以上是`if (pointer)` 足以检查 C 中指针的有效性吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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