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

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

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

前言

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

云恒制造:PCB使用盲孔和埋孔的优点有哪些

云恒制造:PCB使用盲孔和埋孔的优点有哪些

盲孔技术和埋孔技术是PCB制造中常用的技术,主要用于提高PCB板的密度、可靠性、稳定性和耐热性。它们都有各自的优点和适用场景,云恒小编为大家详细介绍PCB使用盲孔和埋孔的优点有哪些。一、盲孔的优点盲孔是指在PCB板上通过钻孔的方式形成的孔洞,但是这些孔洞是不可见的。盲孔的优点主要有以下几点:1、减少...

“天翼云盘助手”上线,云盘秒变硬盘真方便!

“天翼云盘助手”上线,云盘秒变硬盘真方便!

原标题:“天翼云盘助手”上线,云盘秒变硬盘真方便! “十分方便快捷!用了‘天翼云盘助手’,读取天翼云盘的文件不再需要通过客户端下载,可直接运行、打开、编辑或者播放云盘文件,就像访问本地硬盘一样!”日前在中国电信湖北天翼云公司,中国电信云计算高级专家王理向客户详细介绍“天翼云盘助...

高速遇到突发意外,道路救援如何快速定位?一定要学会看这个!

高速遇到突发意外,道路救援如何快速定位?一定要学会看这个!

现在汽车的普及率非常高,基本上出行都是开车自驾游,但是,如果在开车的行驶途中遇到一些意外,车主无法自己解决,就只能找道路救援了。 很多车主对于道路救援的认知仅停留在拖车这一项服务中,其实遇到了电瓶无电、轮胎爆胎等意外状况,也可以找道路救援,不是只有拖车这一种选择。 道路救援...

领克03,A级车内一流!

领克03,A级车内一流!

领克03的车型外观设计主要以年轻运动为主念,比如它的溜背设计加上运动轮縠,整个的车身线条特别流畅,而且加上它的尾灯和大灯的衬托,运动氛围感真的十足!动力方面没得说,搭载了7DCT湿式双离合变速箱,最大功率190Ps,最大扭矩300Nm,平时开车的时候基想要超车简直就是轻松写意,尤其是跑高速...

香港汇丰银行卡网银激活操作指南

香港汇丰银行卡网银激活操作指南

之前办理的汇丰银行账户,很多都不知道怎么启动,网银首次的操作步骤等,今天就给大家整理详细的汇丰银行卡启动步骤流程,希望可以帮到大家! 01 操作之前准备工作 首先在操作之前请确保以下两点: 1、卡和卡密码选择寄到通讯地址(两个快递)账户启动才可注册网银!!...

天涯社区官网无法打开!引网友热议:再见了,青春……

天涯社区官网无法打开!引网友热议:再见了,青春……

日前,有网友发现天涯社区官网已无法打开,相关页面显示“无法访问此网站”。截至目前,该网站仍然无法打开。 天涯社区官方微博在4月1日发布公告称,近期...