首页 >后端开发 >C++ >C 中的 NULL 与 0:我应该使用哪个作为空指针?

C 中的 NULL 与 0:我应该使用哪个作为空指针?

Patricia Arquette
Patricia Arquette原创
2024-12-25 11:05:18511浏览

NULL vs. 0 in C  : Which Should I Use for Null Pointers?

空指针的困境: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中文网其他相关文章!

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