Null, nullptr, 0, '\0', '0', "0", '',"",' '," "的区别
-
Null
:Null
指的是空指针,在c中用(void*)0表示,在c++中用0表示- 任何类型的两个空指针比较相等
- C标准没有说空指针与指向内存地址0 的指针相同,尽管在实践中可能就是这种情况
- 解引用空指针是C中的未定义行为【UB】
-
nullptr
: C++中的空指针- 在C ++中,虽然继承了C的NULL宏,但空指针常量优先解释为整型0而不是指针值,这极容易导致某些错误。故C++ 11引入了一个显式nullptr常量来代替。
-
0
: 整形,代表值0,可用于初始化指针或整型变量,并且在较旧的代码中通常用于表示空指针。然而,它不是类型安全的,如果使用不当,可能会导致微妙的错误。 -
'\0'
: 表示空字符的字符文字,ASCII码为0。它通常用于终止 C 样式字符串。 -
'0'
: 字符零,其 ASCII 值为 48 -
"0"
: 表示包含字符零的字符串。它是一个以空字符结尾的字符序列【编译器自动在结尾加'\0'】 -
''
: 一个空字符文字。它在 C++ 中无效,因为字符文字必须至少包含一个字符。 -
""
: 一个空字符串文字。它表示长度为零的空终止字符序列 -
' '
: 空格字符,ASCII码为32 -
" "
: 表示包含空格字符的字符串。它是一个以空字符结尾、长度为 1 的字符序列。
总之,nullptr
是现代 C++ 代码中表示空指针的首选方式,而 0
和 NULL
是不类型安全的旧替代方案。'\0'
是用于终止 C 样式字符串的空字符,而 '0'
和 "0"
表示字符零。 ''
在 C++ 中无效,""
表示空字符串。 ' '
和 " "
代表空格字符。