当前位置:首页 > 杂谈 > 正文内容

C语言中NULL究竟是不是0 等问题?-c语言里面的null

2023-07-13 11:55:14TONY杂谈106

C语言空指针是NULL,NULL的值不需要是0。但C++空指针必须是0值。

C++作者为了支持模版泛型编程,强行规定所有类型都必须有一个0值,而且规定了指针0值就是空指针。是的,C++中不应该使用NULL,应该使用0。

C语言中NULL究竟是不是0 等问题?-c语言里面的null

0值确实是0值,但0值也是有类型的,0指针,有0整数。而在具体题主所说的地方需要一个指针,所以那个地方的0就是指针。0指针理论上代表指向地址0的指针。

当然,C语言没有这么规定,没有规定NULL的具体值,所以可以使用任意值表示NULL。

对于同时支持C++的编译器,为了让C++与C语言代码兼容,往往会将NULL定义为0值,这样才能兼容C++规定空指针必须为0值的规定。

对于一些纯C编译器来说,有可能会设定NULL为一个非零的任意值,比如-1或者0xffffffff之类都有可能。

至于0值能不能访问,这也是平台相关的。对于x86平台来说0地址恰好是个不能访问的地址,所以空指针设定为0恰好就不能访问,这样也还算方便。不过对于其它平台而言,0值也可以是能访问的地址。

C语言中,NULL是个常量,该指针可以是任意值,对NULL指针的访问会造成什么结果,大概是未定义的。

而C++语言中NULL被定义为0,所以访问NULL等同于访问0地址。

“C语言中NULL究竟是不是0 等问题?-c语言里面的null” 的相关文章

俄罗斯卢布上演“惊天逆转”:对美元暴涨200%,怎么做到的?

俄罗斯卢布上演“惊天逆转”:对美元暴涨200%,怎么做到的?

来源:国是直通车 暴跌约50%,反弹近200%,今年以来俄罗斯卢布对美元汇率坐上了“V”型过山车。 从3月份的全球表现最差货币,到最近的全球表现最佳货币,俄罗斯卢布仅用了两个多月时间。这样的“惊天逆转”到底是怎么完成的? 卢布没被打趴下 俄乌冲突以来,俄罗斯...

全网最全攻略,PubMed原来还能这么用

全网最全攻略,PubMed原来还能这么用

作为全球生命科学和生物医学领域最大搜索引擎,PubMed由美国国家卫生研究院旗下的美国国家医学图书馆对其进行维护管理,是相关领域最好用,最知名的数据库,学会使用PubMed是所有相关专业研究人员的一门必修课。 2022年3月,PubMed迎来了...

2月70城房价数据出炉!一线城市环比上涨!这座省会城市涨幅最大!

2月70城房价数据出炉!一线城市环比上涨!这座省会城市涨幅最大!

国家统计局今早公布了2月份商品住宅销售价格变动情况。数据显示,2月份70个大中城市中,新建商品住宅和二手住宅销售价格环比上涨城市分别有27个和10个,西安的涨幅最大,环比上涨1%。 国家统计局城市司首席统计师绳国庆解读称,2月份,一线城市新建商品住宅和二手住宅销售价格环比上涨,二三线城市环比...

防疫不松懈 服务不停歇——工行株洲分行致广大客户朋友的一封信

防疫不松懈 服务不停歇——工行株洲分行致广大客户朋友的一封信

尊敬的客户朋友: 静默在家,见字如面。 突如其来的疫情打乱了我们工作生活的节奏,与您相见的机会也暂缓。也许此刻的您或坚守疫情防控一线、或关闭经营安心居家,我们正以各自的方式,坚定勇敢地投入这场没有硝烟的战役之中。隔离病毒,不隔离服务,工行株洲分行一如既往伴您左右,如您有任何...

道路救援费用怎么算?——苏州附近道路救援

道路救援费用怎么算?——苏州附近道路救援

道路救援费用说起汽车保险这个话题,相信很多车主都印象深刻。买保险之前,业务员可以说谈了很多,说也要赔付,但发生交通事故后,他找借口说不符合理赔要求。当类似的情况发生时,大多数人都会觉得被骗了,这简直就是在受苦。但作为汽车保险,在另一个方面做得相当不错,那就是道路救援服务有...

爱普生打印机垃圾售后的糟糕经历系列之一

爱普生打印机垃圾售后的糟糕经历系列之一

2022年1月28日更新第一次故障即2021年2月27日固件升级导致打印机变砖的log文件,丝毫看不出什么所谓高级专员说的人为断电、故意关机网络不稳的迹象,就是升级着升级着,然后Success:0 Failed:1 Canceled:0,变砖了。 2021/02/27 08:46:...