nullptr_t类型
概要:
#include <stddef.h> typedef typeof_unqual(nullptr) nullptr_t;
描述:
nullptr_t类型是预定义常量nullptr的类型。该类型仅在区分nullptr与其它表达式类型的时候具有非常有限的用途。该类型是无限定的完整标量类型(unqualified complete scalar type);该类型不同于指针类型,也不同于算术类型;该类型不是原子类型,也不是数组类型,该类型只有一个值nullptr。该类型对象的默认初始化或者空初始化等价于使用nullptr初始化。
nullptr_t类型的大小和对齐方式与指向字符类型的指针相同。nullptr类型值的对象表示与void*类型空指针值的对象表示相同。对于具有此类对象表示的nullptr_t类型对象,其左值转换结果为nullptr;如果对象表示不同,其行为是未定义的。在整个程序执行期间,nullptr_t类型对象值评估为nullptr。
由于nullptr_t类型视为是标量类型,所以可以出现在(void *)0有效的上下文中,例如:
-- 作为alignas、sizeof、typeof运算符的操作数。
-- 作为隐式或者显式转换为指针类型的操作数。
-- 作为nullptr_t类型对象赋值或者初始化时的赋值表达式。
-- 作为nullptr_t类型参数的实参或者出现在可变参数列表中。
-- 作为void表达式。
-- 作为隐式或者显式转换为bool类型的操作数。
-- 作为_Generic主表达式的操作数。
-- 作为!、&&、||、条件运算符的操作数。
-- 作为if语句或者迭代语句的控制表达式。
范例:
|
|
可能输出:
The type of nullptr is nullptr_t type.
(注:编译时实现未支持nullptr_t类型。)
相关内容:
| ptrdiff_t | 表示指针相减结果的类型。 |
| max_align_t | 最大基本对齐的对象类型。 |
| wchar_t | 宽字符类型。 |
| size_t | 表示sizeof运算符运算结果的无符号整数类型。 |
主要参考资料: