在C 语言中,NULL 和 0 的值都是一样的,但是为了目的和用途及容易识别的原因,NULL用于指针和对象,0 用于数值; #include<stdo.h>intmain(){int*p=NULL;printf("%s",p);}/* 输出: 0x00000000 */ 由上面代码可以看出:NULL 在实际底层调用中就是 0 ; 在不同的系统中,NULL 并非总是和 0 等同,NULL 仅...
NULL并非总是和0等同,NULL仅仅代表空值,也就是指向一个不被使用的地址,在大多数系统中,都将0作为不被使用的地址,所以就有了类似这样的定义 #define NULL 0 但并非总是如此,也有些系统不将0地址作为NULL,而是用其他的地址,所以说,千万别将NULL和0等价起来,特别是在一些跨平台的代码中,这更是将给你带来灾难。
defined(NULL) && defined(__NEEDS_NULL) #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif #endif 1. 2. 3. 4. 5. 6. 7. 二.NULL 和 0 区别 在C 语言中,NULL 和 0 的值都是一样的,但是为了目的和用途及容易识别的原因,NULL用于...
c语言NULL和0区别及NULL详解 c语⾔NULL和0区别及NULL详解 先看下⾯⼀段代码输出什么:#include<stdo.h> int main(){ int *p=NULL;printf("%s",p);} 输出<null> ,单步调试可以看出执⾏int *p=NULL,p的值为0x00000000,可以看出,NULL在实际底层调⽤中就是0,在C语⾔中,NULL和0的值都是⼀...
C语言不对0和NULL做严格的区分主要是为了简化语言设计、提高代码简洁性和可读性。尽管在某些情况下这可能...
可以看出,在C中,NULL表示的是指向0的指针,而在C++中,NULL就直接跟0一样了。但有一点值得注意的是:在C语言中,“当常量0处于应该作为指针使用的上下文中时,它就作为空指针使用”(《征服C指针》)。例如,下边的指针定义和初始化是没问题的(即没警告也没报错): ...
点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!这个答案很简单:c语言不区分,是因为它不需要区分。 出现这个设计的原因也很简单:因为指针在设计时,本质就是存放了地址值的整型。所以,如果不是为了便于对地址进行便捷的间接寻址,甚至都不需要设计出指针这种类型及相应的配套语法。而NULL的本...
从值来说的话,都是0值。这俩最根本的区别是类型不同:NULL 是 void* 类型的0,而0是int类型的0。在C语言中值是值,类型是类型,你可以把一个值当做一个类型来处理,也可以当做另外一个类型来处理。比如:值1001,你可以把它当做int类型来处理,那么他就可以进行数学运算符了,你也可以把它当做...
\0'(即0)只是值相同,意义上是不同的哦(这不懂也没事,有汇编知识可看下)C在编译的时候,数据段和堆栈段会被生成一个Dgroup的段组(即在内存中是相连的,并且是共用同一个段地址),而这Dgroup中有一段就是NULL(0,表示是Dgroup的开始那一小段,后面才是数据段这些)...
对NULL与0进行严格区分是上层高级语言才抽象出来的概念,对于c这种底层语言是允许把指针强制转换成整数进行...