‘壹’ C/C++中,NULL和null的区别是什么
c语言和C++对大小写是敏感的,也就知是说null和NULL是区别对待的。NULL(如已宏定义)代表空地址,null(如没宏定义)只是一个符号。
1、其实null和NULL都是字符串,具体看它们宏定义被定义成为什么值。
2、在VS中NULL被定义为0,因为习惯上把宏定义的所有字符都大写,当把NULL它赋值给指针时意思为空,当然你也可以把null定义为0了,都一样。你把0直接赋值给指针也行,只要指针指向0就为空。
3、对于空(null)指针的概念,在 C 标准中明确地定义:值为 0 的整型常量表达式,或强制(转换)为“void*”类型的此类表达式,称为空指针常量。
4、当将一个空指针常量赋予一个指针或与指针作比较时,将把该常量转换为指向该类型的指针,这样的指针称为空指针。空指针在与指向任何对象或函数的指针作比较时保证不会相等。
(1)c语言中null是大写还是小写扩展阅读
在C中,任何类型的两个空指针都保证比较相等。预处理器宏NULL被定义为实现定义的空指针常量,它在C99中可以可移植地表示为0隐式或显式转换为类型的整数值void*(指向void的指针)。
C标准没有说空指针与指向内存地址0 的指针相同,尽管在实践中可能就是这种情况。解引用空指针是C中的未定义行为,并且允许符合要求的实现假定任何被解除引用的指针不为空。
参考资料
网络—Null
网络—C/C++
‘贰’ 写成null或是NULL都可以吧C语言里不区分这个的大小写吧
C语言里是区分大小写的
null和NULL是不一样,
但是看你的编译器是否将null和NULL都定义了。
我在VC++6.0上确认了,
VC++6.0上只在stdio.h中定义了
#define NULL 0
而没有定义null,
所以在VC++6.0上如果直接使用null的话,会报错
‘叁’ C语言用来CHAR还有NULL
15.C
解析:A B 空指针不可以赋值。会出错。
D 指针未赋值。 野指针不可以使用。
16.A
解析:如果null是小写的话,那么这道题选B,C中大小写有区分,大写的NULL实际上就是系统定义的一个符号常量,它的值为0,也就是如果是
printf("%d\n",NULL);那么输出为0,选A
‘肆’ null与NULL
其实null和NULL都是字符串,看你把它们,宏定义为什么值,在VS中NULL被定义为0,因为习惯上把宏定义的所有字符都大写,当把NULL它赋值给指针时意思为空,当然你也可以把null定义为0了,都一样的啦!它们都没定义时都只能叫符号了,定义后就有另外的意思了,你把0直接赋值给给指针也行,只要指针指向0就为空啦!其实NULL在有些编译器中是赋为0了,这时你不能再去#define定义它了,否则就重定义了!
‘伍’ C语言"NULL","true","false"的值都是多少
NULL=0
FALSE=0
TRUE记得是-1,但是如果用于if语句中,任何非0值都是true。但是TRUE一个宏,无法覆盖所有情况。所以切记不要写出TRUE==(表达式)这样的判断,因为这样的判断往往都是错误的
举例来说,intbitmask=0x0010000;
if(~bitmask)//这是true的
if(TRUE==~bitmask)//虽然你想要达到的目的和上面一样,但是实际这会是false。
‘陆’ C语言中“null”是大写还是小写
这个要看你的开发环境中有没有定义,定义的是哪一个。以前的VC6.0中有
#define NULL 0
c语言中:
#define NULL (void*)0
也就是说NULL只是一个宏定义,是大写的,小写没有定义。并且NULL值分别是0和值为0的空指针。