发布网友
发布时间: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