nullptr_t
来自cppreference.com
| 在标头 <stddef.h> 定义
|
||
| |
(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 The nullptr_t type (第 315-316 页)
参阅
| 实现定义的空指针常量 (宏常量) | |
nullptr_t 的 C++ 文档
| |