5.7 我们应该选择NULL还是0作为空指针常数?

问题:

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

许多程序员认为在所有的指针上下文中都应该使用NULL, 以表明该值应该被看作指针。

另一些人则认为用一个宏来定义0, 只不过把事情搞得更复杂, 反而令人困惑。

因而倾向于使用未加修饰的0。

没有正确的答案。

(参见问题9.2 和17.8) C 程序员应该明白, 在指针上下文中NULL 和0 是完全等价的, 而未加修饰的0 也完全可以接受。

任何使用NULL (跟0 相对) 的地方都应该看作一种温和的提示, 是在使用指针;

程序员(和编译器都) 不能依靠它来区别指针0 和整数0。

在需要其它类型的0 的时候, 即便它可能工作也不能使用NULL, 因为这样做发出了错误的格式信息。

(而且, ANSI 允许把NULL 定义为((void *)0), 这在非指针的上下文中完全无效。

特别是, 不能在需要ASCII 空字符(NUL) 的地方用NULL。

如果有必要, 提供你自己的定义#define NUL ’\0’。

永不止步步 发表于01-14 10:22 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:308467个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号