| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1226 人关注过本帖, 2 人收藏
标题:(请教)NULL和0的区别
取消只看楼主 加入收藏
zamely
Rank: 2
等 级:论坛游民
帖 子:42
专家分:10
注 册:2013-6-15
结帖率:77.78%
收藏(2)
已结贴  问题点数:20 回复次数:4 
(请教)NULL和0的区别
VC6.0中编辑C文件:
    int *p=NULL;
    之后为何可以if(p==0)没问题,而if(p==100)却有问题呢?0是整形,怎么可以和指针比较呢?
#ifndef NULL
#ifdef  __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)
#endif
#endif
这个是来自stddef.h文件中的,把NULL定义为(void*)0(非c++环境下)
我实在不能理解为何p=NULL,又可以等于0
2014-01-16 10:21
zamely
Rank: 2
等 级:论坛游民
帖 子:42
专家分:10
注 册:2013-6-15
收藏
得分:0 
回复 2楼 embed_xuel
谢谢回复,这个道理我明白。NULL是宏定义的,在c编译中它是值为0的空指针,当我们检测一个指针是否为空的时候,为何可以直接和数字0比较呢?却不能和其他数字比较
2014-01-16 15:05
zamely
Rank: 2
等 级:论坛游民
帖 子:42
专家分:10
注 册:2013-6-15
收藏
得分:0 
回复 10楼 rjsp
谢谢你了,原来是标准里规定的呀,可以理解了

[ 本帖最后由 zamely 于 2014-1-17 17:03 编辑 ]
2014-01-17 17:01
zamely
Rank: 2
等 级:论坛游民
帖 子:42
专家分:10
注 册:2013-6-15
收藏
得分:0 
回复 8楼 zklhp
谢谢你,涨知识了
2014-01-17 17:03
zamely
Rank: 2
等 级:论坛游民
帖 子:42
专家分:10
注 册:2013-6-15
收藏
得分:0 
回复 5楼 纸T0
我是指的它们类型不同,怎么可以比较,数值如你所说确实是相等的
2014-01-17 17:06
快速回复:(请教)NULL和0的区别
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015981 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved