空指针的值应该是0还是NULL

ttklboy 2009-08-27 03:51:01
很多人都争论过这个问题,本来不想再问一遍的,可刚才做《高质量C++/C编程指南》中附录B的第一题时,被正确答案判了0分,心里有点不服气,因为我清楚的记得C++primer中,空指针的值确实是0的,而之所以可以用NULL初始化一个指针,是因为NULL是从C中继承下来的预处理变量,其值为0。我把C++primer找出来,果然我的记忆没有问题。可《高》一书中,标准答案认为char *p如果要与零值比较,就应该与NULL比较,于0比较是不规范的写法,不得分。
http://man.lupaworld.com/content/develop/c&c++/c/c.htm#_Toc520634066

现在向各位CSDN大牛求证,空指针的值应该是0,还是应该是NULL?
...全文
863 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttklboy 2009-08-27
  • 打赏
  • 举报
回复
哎,其实我也觉得这种问题拿来问有点不好,谢谢各位了
xiao_ke 2009-08-27
  • 打赏
  • 举报
回复
这个就像字符串的'\0' 和 0一个道理!
你觉得 char a = 0; 好还是 char a = '\0'; 好呢?

我觉得一样好! 嘿嘿
tkgg123321 2009-08-27
  • 打赏
  • 举报
回复
char *p如果要与零值比较,就应该与NULL比较,于0比较是不规范的写法
这句应该没问题吧

至于赋值那种更好些,我也想知道
xingzhe2001 2009-08-27
  • 打赏
  • 举报
回复
C++一样的, C不一样。指针比较写成NULL是惯例,别人至少好阅读。
kakashi0309 2009-08-27
  • 打赏
  • 举报
回复

#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
jackyjkchen 2009-08-27
  • 打赏
  • 举报
回复
NULL就是0,这是编程风格的问题
VC中的定义#define NULL 0,在windef.h里

举个例子,int bl;你说应该如何赋0值?
从编译器角度讲
bl = 0;
bl = NULL;
bl = false;
都是等价的,但是int型从风格上来说必须用0,这样程序才清晰!
adventurelw 2009-08-27
  • 打赏
  • 举报
回复
事实上NULL就等于0,所以。。。。。。
NULL是表象、0是本质
taodm 2009-08-27
  • 打赏
  • 举报
回复
就扔了那个林锐的破书吧。
pengzhixi 2009-08-27
  • 打赏
  • 举报
回复
就C++来说 建议空指针赋值为0.这会有更好的移植性

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧