Defined in header <stddef.h> | ||
---|---|---|
typedef typeof(nullptr) nullptr_t; | (since C23) |
nullptr_t
is the type of the predefined null pointer constant, nullptr
. It is a distinct type that is not itself a pointer type. It can be implicitly converted to any pointer type or bool
, and the result is the null pointer value of that type or false
respectively. No type other than nullptr_t
itself can be converted or explicitly cast to nullptr_t
.
sizeof(nullptr_t)
and alignof(nullptr_t)
are equal to sizeof(void*)
and alignof(void*)
respectively.
nullptr_t
has only one valid value, i.e., nullptr
. The object representation of nullptr
is same as that of (void*)0
. If a program produces a nullptr_t
value with a different object representation, the behavior is undefined.
Demonstrate that nullptr_t
is a distict type.
#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); }
Output:
void* other nullptr_t
implementation-defined null pointer constant (macro constant) |
|
C++ documentation for nullptr_t |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/types/nullptr_t