C++ 是';空';和';空';相同的?
null和null常量在C/C++中是否完全相同C++ 是';空';和';空';相同的?,c++,c,C++,C,null和null常量在C/C++中是否完全相同 当我在Visual Studio中编写代码时,我注意到null和null没有得到相同的语法高亮显示,编译结果与在代码的某些部分使用null而不是null不同。它们可能是,也可能不是 < C和C++都定义了 null ,但略有不同。 null不是两个标准的一部分;它既不是关键字也不是保留字,因此可以将其用作变量名、类名和c C++中指针指针空值的首选方法是 NulLPTR < /C> >,它的类型特别是指针空值。 < P> C语言有 null ,
当我在Visual Studio中编写代码时,我注意到null和null没有得到相同的语法高亮显示,编译结果与在代码的某些部分使用null而不是null不同。它们可能是,也可能不是 < C和C++都定义了<代码> null <代码>,但略有不同。
null
不是两个标准的一部分;它既不是关键字也不是保留字,因此可以将其用作变量名、类名和c
C++中指针指针空值的首选方法是
null
字符时使用null
null
字符指的是“\0”
如果你想要区别的话,那就把语义排除在外
在(x='\0')
和(x==NULL)
之间,这取决于x
是什么。
如果x
是char
或int
则使用(x='\0')
,如果x
是,则使用(x==NULL)
指针。
对于其他你必须考虑的问题
比较是有效的,以及事物将如何转换或提升。C标准规定:
6.3.2.3/3指针
值为0的整型常量表达式或此类表达式
转换为类型void*
,称为空指针常量
stddef.h
然后包含该值的NULL
-定义
C++(另一种与C大致相关的语言,当然不是人们通常认为的)在其早期版本中使用了NULL
(不要使用它!)。但是在C++11之前的版本中,常量0
被定义为表示指向零的指针的方式。唉,这有一些严重的缺点,然后C++11定义了nullptr
常量。请注意,nullptr
是一个关键字
C++标准说:
2.14.17/1指针文本
指针文本是关键字nullptr
。它是类型为std::nullptr\u t
的PR值。[注意:std::nullptr\u t
是一种不同的类型,既不是指针类型,也不是指向成员类型的指针;相反,此类型的prvalue是一个空指针常量,可以转换为空指针值或空成员指针值。]
3.9.1/10基本类型
std::nullptr\u t
类型的值是空指针常量。这样的
值参与指针和指向成员的指针
转换<代码>尺寸(std::nullptr\t)
应等于
sizeof(void*)
< C++ >关于宏<代码> null <代码>是一个实现C++定义的空指针常量。< /P>
没有“C/C++”,它们是不同的语言,在本例中的行为也不同。请把你的问题缩小到一种特定的语言。另外,什么是
null
,Java?“编译结果与代码的某些部分中使用null而不是null不同”我认为您回答了自己的相关问题:为了让事情完全清楚,C有null指针、null指针常量、null宏和null终止。所有的意思都不一样。整数常量0
可以是其中任何一个。我们可以把它写成00
或\0
,也就是八进制符号。当提到空终止符时,我们总是使用八进制表示法,因为我们可以-没有理由这样做。您也可以使用hex0x0
或\x0
,它的意思与上述所有内容完全相同,但如果您使用,我不再知道你指的是什么。你可以在下面找到null
sea@SombreroChicken:你也可以在周五下午在我的办公室找到它。@SombreroChicken和seanulls
在海滨我发现了一张很好的带卫生纸卷的照片,解释了空与空的区别_(ツ)_/席@ Bathsheba(你需要标题为ReDistPoST的上下文),实际上,它是与它相关联的ASCII。“如果X是指针,使用(x= null)不是对C++的正确建议。这是不正确的。在C,<代码> \ 0”< /C> >与0完全相同(两者都是代码> int <代码>类型)在C++中,前者是“代码> char < /C> >类型,后者是