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

NULL,0,'\0',“0”,"\0"你真的分得清吗?-0和null做比较会怎样

2023-07-13 10:47:17TONY杂谈77

前言

NULL,0,'\0',“0”,"\0"你真的分得清吗?-0和null做比较会怎样

在C语言中,我们有时候看到NULL,有时候也看到\0,那它们之间有什么区别呢?

本质

本质来说,NULL,0,\0都是一样的,都是值0。是的,你没有听错。说到这本文差不多应该结束了。不过为了不被打,还是继续说一说。它们虽然值都是0,但是含义却是不一样的。

NULL

虽然值是0,但是它的含义不一样,或者说它的类型不一样。NULL是指针类型,不过它是空指针,即值为0。

//来源:公众号【编程珠玑】 博客:https://www.yanbinghu.com //null.c #include<stdio.h> int main(void) { int a = NULL; printf("%p\n",a); return 0; }

我们编译它:

$ gcc -o null null.c null.c: In function ‘main’: null.c:14:10: warning: initialization makes integer from pointer without a cast [-Wint-conversion] int a = NULL; ^

它给了我们一个警告,提示尝试将指针转换为整数。这也就正验证了我们前面的说法。

实际上NULL通常是如下定义:

#define NULL (void*)0

所以,如果要给一个指针类型初始化,那么你给它一个NULL,使得能够明显的看到这是一个指正。

当然,在C++中,你更应该使用nullptr,而不是NULL。

\0

我们都知道\是转义符,用单引号包起来,再加转义,实际上就是0,只不过它表示的是字符。就向下面这样:

//来源:公众号【编程珠玑】 博客:https://www.yanbinghu.com //nul.c #include<stdio.h> int main(void) { char a = \0; char b = 0; printf("a = %d,b = %d\n",a,b); return 0; }

编译运行:

$ gcc -o nul nul.c ./nul a = 0,b = 48

我们最常见到的就是它作为字符串的结束符。所以我们常常会看到下面这样的写法:

char str[16]; /*do something*/ str[15] = \0;

还记得printf是如何打印字符串,以及strcmp比较停止规则吗?是的,它们都以遇到\0结束。

注意,它和0完全不一样。通过打印就可以看到了,实际上\0的值就是0。

需要特别注意的是,如果\0的0后面跟八进制的数,则会被转义。所以\60与0的值一致。

0

这个不用多解释。

int a = 0;

>微信公众号【编程珠玑】:专注但不限于分享计算机编程基础,Linux,C语言,C++,数据结构与算法,工具,资源等编程相关[原创]技术文章。

原文地址:

https://www.yanbinghu.com/2019/09/19/18180.html

"0"

用双引号包裹的0是字符串,我们看不到的是它结尾还有一个’\0‘

#include<stdio.h> int main(void) { char str[] = "0"; printf("sizeof str is %d,string len is %d\n",sizeof(str),strlen(str)); return 0; }

运行结果:

sizeof str is 2,string len is 1

"\0"

这也是字符串,只不过是两个空字符。使用strlen计算字符串长度为0。

" "

字符串。字符串长度为1,占用空间2字节,是一个空格加空字符。

总结

到这里你应该明白了,它们的值可能一样,但赋予的含义却不一样,为了代码良好的可读性,你应该在恰当的时候使用合适的值。

关注公众号【编程珠玑】,第一时间获取更多原创技术文章

“NULL,0,'\0',“0”,"\0"你真的分得清吗?-0和null做比较会怎样” 的相关文章

58同城推经纪人“直播讲房”提升在线带看服务品质

58同城推经纪人“直播讲房”提升在线带看服务品质

来源:经济日报-中国经济网 经济日报-中国经济网北京2月19日讯 在新冠肺炎疫情防控期间,不少房产经纪企业延迟复工,对线下带看等服务带来冲击。2月18日起,58同城、安居客在北京、上海、广州、深圳、成都、杭州等近50个城市陆续上线房产经纪人“直播讲房”功能,帮助经纪人足不出户为买找...

你还在用pubmed搜文献?一个网址搜索下载翻译全搞定!

你还在用pubmed搜文献?一个网址搜索下载翻译全搞定!

说到搜索英文文献,最常用的应该就是Pubmed了,但很多文献不提供免费全文,还需要去别的免费网站搜索下载。所以今天就给医生大大们安利一个相对更有优势的英文文献搜索引擎——Geenmedical,一起来看看吧! 网址:https://www.geenmedical.com/...

2月份70城房价:一线城市同比上涨,二三线同比降幅收窄

2月份70城房价:一线城市同比上涨,二三线同比降幅收窄

法拍新资产推广 前言 立拍法服法拍新资产推广!最新优质法拍房!价格实惠,房屋地段优。详细情况如下 2月份70城房价:一线城市同比上涨,二三线同比降幅收窄     2023年2月份,随着政策效果逐步显现及住房需求进一步释放,70个...

地表最强翻译神器推荐,不服来辩,哪款是你的菜

地表最强翻译神器推荐,不服来辩,哪款是你的菜

不论是阅读文献还是论文写作,翻译软件是科研新手起步必须要使用的工具。除了百度翻译、谷歌翻译外,还有哪些更好用的翻译引擎呢,今天小虎编辑就给大家带来最强翻译神器推荐,让大家轻轻松松突破语言障碍。专业性最强的翻译神器推荐爱特曼云翻译 网址:https://fanyi.atman360....

原创
            生肖马的克星是谁?贵人又是谁?

原创 生肖马的克星是谁?贵人又是谁?

原标题:生肖马的克星是谁?贵人又是谁? 属相马的缘主很看待情感很谨慎,他们在都还没宣布处对象的情况下,便会综合性考虑到各个领域的因素,掌握另一方和自己的优点和缺点和相辅相成之处,能够长期性发展趋势才会将本身的情感主要表现出去,而生肖马在开始的一段情感的情况下,就代表着他...

金山办公 WPS 365 全家桶发布:包含 Office、云盘、邮件等服务

金山办公 WPS 365 全家桶发布:包含 Office、云盘、邮件等服务

原标题:金山办公 WPS 365 全家桶发布:包含 Office、云盘、邮件等服务 IT之家 4 月 5 日消息,金山办公宣布推出旗下办公软件的全新品牌“WPS 365”。据官网描述,“新一代・WPS 办公全家桶”WPS 365 是金山办公提供的通用办公套件产品,包含强大的办公软...