null和\0的区别 null==0的结果是什么
null和\0的区别 null==0的结果是什么
前言
在C语言中,我们有时候看到NULL,有时候也看到\0,那它们之间有什么区别呢?
本质
本质来说,NULL,0,\0都是一样的,都是值0。是的,你没有听错。说到这本文差不多应该结束了。不过为了不被打,还是继续说一说。它们虽然值都是0,但是含义却是不一样的。
NULL
虽然值是0,但是它的含义不一样,或者说它的类型不一样。NULL是指针类型,不过它是空指针,即值为0。
//来源:公众号【编程珠玑】 博客:https://www.yanbinghu.com
//null.c
#include
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
#includeint 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;“0”
用双引号包裹的0是字符串,我们看不到的是它结尾还有一个’\0‘
#includeint 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”
这也是字符串,只不过是两个空字符。字符串长度为0。
” “
字符串。字符串长度为1,占用空间2字节,是一个空格加空字符。
总结
到这里你应该明白了,它们的值可能一样,但赋予的含义却不一样,为了代码良好的可读性,你应该在恰当的时候使用合适的值。
微信公众号【编程珠玑】:专注但不限于分享计算机编程基础,Linux,C语言,C++,数据结构与算法,工具,资源等编程相关[原创]技术文章。
标签:
2024-02-21 01:07:06
116
属猴的和什么属相最配最合适呢 事莫明于有效,论莫定于有证。作者:王充 只有人们的社会实践,才是人们对于外界认识的真理性的标准。真理的标准只能是社会的实践。作者:毛泽...
2024-02-21 01:04:52
145
日本美食类动漫排行榜 日本美食的动漫 相信很多人或多或少都看过一些专门讲料理的一些美食类动漫作品,虽然这些作品的剧情相对平淡,但如果选择在吃饭的时候看这些作品,就会...
2024-02-21 01:02:37
130
俗话说三寸长寿,四寸无忧,到底指的是什么东西的尺寸? 中国文化传承悠远流长,还有祖祖辈辈传下来的老祖宗智慧,也让后人得到很多好处。尤其是在养生方面,没有人比中国人更...
2024-02-21 01:00:22
90
b族维生素的各种作用是什么 b族维生素的作用及功能 什么是B族维生素? B族维生素是人体内糖类、脂肪、蛋白质等代谢时不可缺少的物质,主要包括维生素B1(硫胺素)、维生素B2(核...
2024-02-21 00:58:08
195
西塘古镇,位于浙江嘉兴市嘉善县,是一座藏在岁月深处的江南古镇 西塘古镇位于浙江省嘉兴市嘉善县,离嘉善县城11公里,是一座有着近千年历史的江南古镇。西塘古镇曾用名斜塘,...
2024-02-21 00:55:53
166
当我飞奔向你拍摄地点苏扬 当我飞奔向你拍摄地点小卖部 校园小甜剧《当我飞奔向你》开播了,该剧改编自小说《她病得不轻》,由导演猫的树执导拍摄,讲述高中生的校园生活和懵...
2024-02-21 00:53:38
173
带状疱疹如何预防 带状疱疹的预防 带状疱疹是一种因为感染上水痘痘带状疱疹病毒,从而引起的一种感染性疾病。一旦患病,在患者的身体一侧会出现明显的疼痛感,随后就会出现成...
2024-02-21 00:51:24
148
87年的男兔最佳配偶 87年属兔的男 87年的男兔最佳婚配 是什么?兔年出生的人男性性格非常柔和,他们待人热情,并且心思细腻,很擅长照顾家人,并且在家中也常常会主动为另一半分...
2024-02-21 00:49:09
171
生肖猴适合做什么职业 属猴的从事什么职业好 生肖猴是中国传统十二生肖之一,出生年份包括:1932、1944、1956、1968、1980、1992、2004、2016。根据传统文化,生肖猴的人通常机智、聪明、...
2024-02-21 00:46:54
151
钱塘江“体检报告”出炉! 鳗鲡、刀鲚、贝氏䱗、革条副鱊……江里的这些稀有鱼 类,你会念吗? 想知道近两年,钱塘江的“健康指数”吗? 11月14日,钱塘江流域水环境共治共保联...
2024-02-21 00:44:40
141
没到月经期小腹疼身体发热 没到月经期小腹疼正常吗 小王发现今天并不是她的姨妈期,但是却感觉肚子像痛经时一样很痛。很多女生肯定也出现过这种现象,就是在非经期的时候,出...
2024-02-21 00:42:25
116
甲状腺癌不要慌,能否治愈与这些因素有关 导读:很多患者通过甲状腺彩超检查,发现甲状腺结节,于是很担心,是不是甲状腺癌。其实患者大可不必过于恐慌,因为绝大多数的甲状腺...
2024-02-21 00:40:10
135
绿萝移盆后打蔫了怎么办 绿萝移盆后打蔫了怎么办视频 水分不足,植物的叶子通过蒸腾作用的吸取地下水,缺水情况下会自发脱落部分叶片减少水分流失。将发黄打蔫的叶片剪去,换...
2024-02-21 00:37:56
82
孩子的身高生长黄金期在什么时候 孩子的身高生长期 1.什么是遗传身高?如何计算遗传身高? 孩子能够长多高,是遗传和环境两方面因素作用的结果。一般来说,遗传因素占70%左右,...
2024-02-21 00:35:41
177
狗狗生绦虫怎么办 狗狗寄生虫绦虫图片 狗感染绦虫病的处置方法是,使用犬用驱虫药进行体内驱虫,当狗感染绦虫病较为严重时,应立即带其去宠物医院治疗。狗感染了绦虫病时,大...
2024-01-30 08:17:06
147
辩别组词对不对(辨别组词对不对) 参考答案: 一、看拼音写词语。 (指针)(帮助)(导演)( 永远)( 碰到) ( 特别)(积雪 )(稠密 ) ( 果实)( 一盏 ) 二、选择正确...
2024-01-30 08:14:51
133
qq飞车什么时候出来的(qq飞车) 在公测一周年来临之际,全民竞速游戏《QQ飞车手游》公布了让业界震惊的消息:其全球手游的注册用户数突破2亿,IP用户数量则突破7亿。从QQ飞车 的...
2024-01-30 08:12:36
84
096型核潜艇 096型核潜艇是我国第三代战略核潜艇,相对于第二代的094型战略核潜艇,其排水量,打击效能,单舰综合战力等都超出了不少。最为典型的就是该舰的火力系统,相对于09...
2024-01-30 08:10:21
68
鸡咳嗽气喘用什么药最有效(鸡咳嗽气喘用什么药最有效果) 大家好,最近还有很多朋友对于鸡咳嗽气喘用什么药最有效不是很理解。然后还有一些网友想弄清楚鸡咳嗽气喘用什么药最...
2024-01-30 08:08:07
73
电脑浏览器在哪里(电脑浏览器在哪里升级) 电脑怎样更改默认浏览器 方法一:控制面板更改默认浏览器 1、 进入电脑桌面,找到并打开控制面板,点击“程序” 2、 然后,在程序页...