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

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

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

前言

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做比较会怎样” 的相关文章

优采云SEO发帖软件,助力企业快速、精准的SEO优化!

优采云SEO发帖软件,助力企业快速、精准的SEO优化!

原标题:优采云SEO发帖软件,助力企业快速、精准的SEO优化! 如今,随着互联网的发展,越来越多的企业都希望通过SEO技术来提升网站的曝光率。然而,搜索引擎优化是一项复杂的工作,需要对整个网站进行全面的分析和优化,以便获得收录和排名。因此,SEO发帖软件应运而生,它可以帮助企业快...

智能客服vs人工客服,两者真水火不容?

智能客服vs人工客服,两者真水火不容?

原标题:智能客服vs人工客服,两者真水火不容? 随着互联网、智能技术的不断发展,Chatgpt的到来引发各界热议,不少人认为Chatgpt将给各个领域带来翻天覆地的变化。而在客服行业,AI产物——智能客服早已落地并且被广泛运用,在Chatgpt爆火的这段时间,有望率先融合应用Ch...

PubMed检索史诗级加强,这两个超神网站一定要学会

PubMed检索史诗级加强,这两个超神网站一定要学会

PubMed作为生物医学检索系统在科研领域受到广泛的关注,因为其免费,登录速度较快,因此成为很多科研人员的常用检索工具。我们在使用PubMed时,检索效率总会有不尽人意的时候,很多新手会觉着PubMed检索效果和百度学术差不多,甚至因为是全英文,在使用时体验还不如百度学术。对于一些进阶用户来说,尽管...

工行德州分行聚焦“一老一小一新”打造有温度的银行

工行德州分行聚焦“一老一小一新”打造有温度的银行

让老有所乐、幼有所教、“新”有所属的幸福图景照进现实。近年来,工行德州分行践行金融为民理念,以守护“一老一少一新”美好生活为目标,聚焦民之所盼,发挥金融所长,通过对老、少、新等群体实施多样化、普惠型、见实效的服务举措,不断提升“一老一少一新”的幸福指数。彰显负责任大行的良好形象 舒...

从“第一花旦”到“人民艺术家”,秦怡的人生经历让人心疼

从“第一花旦”到“人民艺术家”,秦怡的人生经历让人心疼

原标题:从“第一花旦”到“人民艺术家”,秦怡的人生经历让人心疼 2022年,“第一花旦”秦怡老师去世,享年100岁。回顾她的从影生涯,先后参演40多部影视作品,塑造了许多经典形象,并先后获得“最美奋斗者”个人称号以及“人民艺术家”的国家荣誉称号。 却没想到,生活中的秦怡,...

云盘行业的“冰与火”

云盘行业的“冰与火”

配图来自Canva可画 无论是在日常生活还是在漫漫旅途中,人们越来越习惯打开手机摄像头,定格记录下美好瞬间;遇见喜爱的剧集时,也愿意将之保存下来。不过,若想将这些图片、视频资料全部保存下来的话,仅仅依靠手机的存储空间是远远不够的。另外,为了防止误删文件资...