Namespaces
Variants

Predefined null pointer constant (since C23)

From cppreference.net

Contenidos

Sintaxis

nullptr (desde C23)

Explicación

La palabra clave nullptr denota una constante predefinida de puntero nulo. Es un no lvalue de tipo nullptr_t . nullptr puede ser convertido a tipos puntero o bool , donde el resultado es el valor de puntero nulo de ese tipo o false respectivamente.

Palabras clave

nullptr

Ejemplo

Demuestra que una copia de nullptr también puede utilizarse como constante de puntero nulo.

#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); // OK
    g(NULL); // OK
    g(0); // OK
    auto cloned_nullptr = nullptr;
    g(cloned_nullptr); // OK
    [[maybe_unused]] auto cloned_NULL = NULL;
//  g(cloned_NULL); // definido por la implementación: posiblemente OK
    [[maybe_unused]] auto cloned_zero = 0;
//  g(cloned_zero); // Error
    DETECT_NULL_POINTER_CONSTANT(((void*)0));
    DETECT_NULL_POINTER_CONSTANT(0);
    DETECT_NULL_POINTER_CONSTANT(nullptr);
    DETECT_NULL_POINTER_CONSTANT(NULL); // definido por la implementación
}

Salida posible:

Function g called
Function g called
Function g called
Function g called
void*
integer
nullptr_t
void*

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 6.4.4.6 Constantes predefinidas (p: 66)

Véase también

constante de puntero nulo definida por la implementación
(macro constante)
el tipo de la constante de puntero nulo predefinida nullptr
(typedef)