开发者社区> 问答> 正文

如果 NULL 和 0 作为空指针常数是等价的, 那我到底该用哪一个呢?

如果 NULL 和 0 作为空指针常数是等价的, 那我到底该用哪一个呢?

展开
收起
游客py5kcp7dd6tu6 2022-03-29 01:04:48 329 0
1 条回答
写回答
取消 提交回答
  • 许多程序员认为在所有的指针上下文中都应该使用 NULL, 以表明该值应该被看作指针。 另一些人则认为用一个宏来定义 0, 只不过把事情搞得更复杂, 反而令人困惑。因而 倾向于使用未加修饰的 0。没有正确的答案。 C 程序员应该明白, 在指针上下文中 NULL 和 0 是完全等价的, 而未加修饰的 0 也完全可以接受。任何使用 NULL (跟 0 相对) 的地方都应该看作一种温和的提示, 是在使用指针; 程序员 (和编译器都) 不能依靠它来区别指针 0 和整数 0。 在需要其它类型的 0 的时候, 即便它可能工作也不能使用 NULL, 因为这样做发出了错误的格式信息。(而且, ANSI 允许把 NULL 定义为 ((void *)0), 这在非指针的 上下文中完全无效。特别是, 不能在需要 ASCII 空字符 (NUL) 的地方用 NULL。如果有必要, 提供你自己的定义

    #define NUL '\0'
    
    2022-03-29 01:05:26
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载