Predefined null pointer constant (since C23)

From cppreference.com

Syntax

nullptr(since C23)Explanation

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.

Keywords

nullptr

Example

Demonstrates that a copy of nullptr can also be used as a null pointer constant.

Run this code

#include<stddef.h>#include<stdio.h>voidg(int*){puts("Function g called");}#define DETECT_NULL_POINTER_CONSTANT(e) \ _Generic(e, \ void* : puts("void*"), \ nullptr_t : puts("nullptr_t"), \ default : puts("integer") \ )intmain(){g(nullptr);// OKg(NULL);// OKg(0);// OKautocloned_nullptr=nullptr;g(cloned_nullptr);// OK[[maybe_unused]]autocloned_NULL=NULL;// g(cloned_NULL); // implementation-defined: maybe OK[[maybe_unused]]autocloned_zero=0;// g(cloned_zero); // ErrorDETECT_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* References

C23 standard (ISO/IEC 9899:2024):

6.4.4.6 Predefined constants (p: 66)

See also