C语言 空字符 NULL 和字符 '0' 的区别

发布网友 发布时间:2022-04-22 14:00

我来回答

5个回答

热心网友 时间:2023-05-19 10:22

ASCII码听过吧,字符和字符串的数字就是ASCII,它们和我们的十进制数是有区别的如:字符'0', '1', '2'……换成十进制数是48, 49, 50,这就是' ' 表示的字符和没有的区别哦而字符串就是由字符组成,但有一个区别:字符串“0123”,它可分割为'0' '1' '2' '3' '\0' <-----多了一个尾巴'\0'------对应的十进制值0(和'0'要区别开而NULL的值就是'\0',即十进制的0,而字符'0'的十进制值是48(要分别开来哦) --更深一层的就是NULL和'\0'(即0)只是值相同,意义上是不同的哦(这不懂也没事,有汇编知识可看下)C在编译的时候,数据段和堆栈段会被生成一个Dgroup的段组(即在内存中是相连的,并且是共用同一个段地址),而这Dgroup中有一段就是NULL(0,表示是Dgroup的开始那一小段,后面才是数据段这些)段了,它由编译器生成的,记录了编译器的相息。所以有相关的保护,不允许对它的内容修改<----这就是为何NULL值的指针是安全的,对NULL值的指针赋值会报错

热心网友 时间:2023-05-19 10:23

null是一个宏。
#ifndef NULL
#ifdef __cplusplus//这个是指示是用C++来编译程序
#define NULL 0 //用NULL这个字符代表0
#else
#define NULL ((void *)0)
#endif
#endif

一般
null==0
null!=‘0’

当然
'0'==48

热心网友 时间:2023-05-19 10:23

NULL与0的区别:

还是让我们看一下windef.h中NULL的定义:

#ifndef NULL
#ifdef __cplusplus//这个是指示是用C++来编译程序
#define NULL 0 //用NULL这个字符代表0
#else
#define NULL ((void *)0)
#endif
#endif

所以说:它们没有区别,只不过在C里面会做一个强制类型转换。

热心网友 时间:2023-05-19 10:24

NULL的ASCII码值是0'0'的ASCII码值是48(也许没能理解楼主的意思)

热心网友 时间:2023-05-19 10:24

NULL的内码是0'0'的内码是48

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com