空指针的困境:NULL 与 0
在 C 编码实践的挂毯中,出现了关于使用NULL 与空指针的 0(零)。这个讨论的起源在于 C 的早期,当时 NULL 被定义为 (void*)0。这个约束限制了它对 void 指针的分配,使其有些不切实际。因此,开发人员采用了使用 0 作为空指针的约定。
尽管 C 不断发展,但偏好仍然存在。一些程序员(如作者)偏爱 0,因为它直观地用作空值,并且与真值测试兼容(if (p && !q))。相反,其他人则基于美学主张 NULL。
为了解决这个持续存在的问题,让我们考虑一下 C 的创建者 Bjarne Stroustrup 的观点。根据 Stroustrup 的 C 风格和技术常见问题解答,NULL 实际上与 C 中的 0 同义,这取决于个人喜好。他建议使用 0 来避免宏,并强调预标准的 NULL 定义有时会导致意外行为。
在 C 11 中,引入了 nullptr 关键字来显式定义空指针值。然而,Stroustrup 建议关注代码功能,而不是关注细微差别。
最终,NULL 和 0 之间的选择仍然是个人喜好问题。两种方法都有其优点,但都没有本质上的优越性。确保编码团队或项目内的一致性很重要,但没有客观理由明确地选择一种选择而不是另一种。
以上是C 中的 NULL 与 0:我应该使用哪个作为空指针?的详细内容。更多信息请关注PHP中文网其他相关文章!