nullptr | (since C23) |
The keyword nullptr
denotes a predefined null pointer constant. It is a non-lvalue of type nullptr_t
. nullptr
can be converted to a pointer types or bool
, where the result is the null pointer value of that type or false
respectively.
Demonstrates that a copy of nullptr
can also be used as a null pointer constant.
#include <stddef.h> #include <stdio.h> void g(int*) { puts("Function g called"); } #define DETECT_NULL_POINTER_CONSTANT(e) \ _Generic(e, \ void* : puts("void*"), \ nullptr_t : puts("nullptr_t"), \ default : puts("integer") \ ) int main() { g(nullptr); // Fine g(NULL); // Fine g(0); // Fine puts("----------------"); auto cloned_nullptr = nullptr; auto cloned_NULL = NULL; auto cloned_zero = 0; g(cloned_nullptr); // Fine // g(cloned_NULL); // ERROR // g(cloned_zero); // ERROR puts("----------------"); DETECT_NULL_POINTER_CONSTANT(((void*)0)); DETECT_NULL_POINTER_CONSTANT(0); DETECT_NULL_POINTER_CONSTANT(nullptr); DETECT_NULL_POINTER_CONSTANT(NULL); // implementation-defined }
Possible output:
Function g called Function g called Function g called ---------------- Function g called ---------------- void* integer nullptr_t void*
implementation-defined null pointer constant (macro constant) |
|
(C23) | the type of the predefined null pointer constant nullptr (typedef) |
C++ documentation for nullptr |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/language/nullptr