nullptr_t
来自 cppreference.com
在头文件 <stddef.h> 中定义 |
||
typedef typeof(nullptr) nullptr_t; |
(自 C23 起) | |
nullptr_t
是预定义空指针常量 nullptr 的类型。它是一种独特的类型,本身不是指针类型。它可以 隐式转换为 任何指针类型或 bool,结果分别是该类型的空指针值或 false。除了 nullptr_t
本身之外,没有任何其他类型可以转换为或显式强制转换为 nullptr_t
。
sizeof(nullptr_t) 和 alignof(nullptr_t) 分别等于 sizeof(void*) 和 alignof(void*)。
nullptr_t
只有一个有效值,即 nullptr。 nullptr 的对象表示与 (void*)0 的对象表示相同。如果 左值转换 生成具有不同对象表示的 nullptr_t
值,则行为未定义。
[编辑] 示例
证明 nullptr_t
是一种独特的类型。
运行此代码
#include <stddef.h> #include <stdio.h> #define DETECT_NULL_POINTER_CONSTANT(e) \ _Generic(e, \ void* : puts("void*"), \ nullptr_t : puts("nullptr_t"), \ default : puts("other") \ ) int main() { DETECT_NULL_POINTER_CONSTANT(((void*)0)); DETECT_NULL_POINTER_CONSTANT(0); DETECT_NULL_POINTER_CONSTANT(nullptr); }
输出
void* other nullptr_t
[编辑] 参考资料
- C23 标准 (ISO/IEC 9899:2024)
- 7.21.2 nullptr_t 类型 (p: 315-316)
[编辑] 另请参阅
实现定义的空指针常量 (宏常量) | |
C++ 文档 for nullptr_t
|