Null, nullptr, 0, '\0', '0', "0", '',"",' '," "的区别

发布时间 2023-07-19 19:33:02作者: Keith-

Null, nullptr, 0, '\0', '0', "0", '',"",' '," "的区别

  • Null: Null指的是空指针,在c中用(void*)0表示,在c++中用0表示

    1. 任何类型的两个空指针比较相等
    2. C标准没有说空指针与指向内存地址0 的指针相同,尽管在实践中可能就是这种情况
    3. 解引用空指针是C中的未定义行为【UB】
  • nullptr: C++中的空指针

    1. 在C ++中,虽然继承了C的NULL宏,但空指针常量优先解释为整型0而不是指针值,这极容易导致某些错误。故C++ 11引入了一个显式nullptr常量来代替。
  • 0: 整形,代表值0,可用于初始化指针或整型变量,并且在较旧的代码中通常用于表示空指针。然而,它不是类型安全的,如果使用不当,可能会导致微妙的错误。

  • '\0': 表示空字符的字符文字,ASCII码为0。它通常用于终止 C 样式字符串

  • '0': 字符零,其 ASCII 值为 48

  • "0": 表示包含字符零的字符串。它是一个以空字符结尾的字符序列【编译器自动在结尾加'\0'】

  • '': 一个空字符文字。它在 C++ 中无效,因为字符文字必须至少包含一个字符

  • "": 一个空字符串文字。它表示长度为零的空终止字符序列

  • ' ': 空格字符,ASCII码为32

  • " ": 表示包含空格字符的字符串。它是一个以空字符结尾、长度为 1 的字符序列。

总之,nullptr 是现代 C++ 代码中表示空指针的首选方式,而 0NULL 是不类型安全的旧替代方案。'\0' 是用于终止 C 样式字符串的空字符,而 '0'"0" 表示字符零。 '' 在 C++ 中无效,"" 表示空字符串。 ' '" " 代表空格字符。