nullptr_t
|
定义于头文件
<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++ documentation
for
nullptr_t
|
|