Namespaces
Variants

nullptr_t

From cppreference.net
< c ‎ | types
Definido en el encabezado <stddef.h>
typedef typeof ( nullptr ) nullptr_t ;
(desde C23)

nullptr_t es el tipo de la constante predefinida de puntero nulo, nullptr . Es un tipo distinto que no es en sí mismo un tipo puntero. Puede ser convertido implícitamente a cualquier tipo puntero o bool , y el resultado es el valor de puntero nulo de ese tipo o false respectivamente. Ningún tipo excepto nullptr_t mismo puede ser convertido o convertido explícitamente a nullptr_t .

sizeof ( nullptr_t ) y alignof ( nullptr_t ) son iguales a sizeof ( void * ) y alignof ( void * ) respectivamente.

nullptr_t tiene solo un valor válido, es decir, nullptr . La representación del objeto de nullptr es la misma que la de ( void * ) 0 . Si una conversión de lvalue produce un valor nullptr_t con una representación de objeto diferente, el comportamiento es indefinido.

Ejemplo

Demostrar que nullptr_t es un tipo distinto.

#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);
}

Salida:

void*
other
nullptr_t

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.21.2 El tipo nullptr_t (p: 315-316)

Véase también

constante de puntero nulo definida por la implementación
(macro constante)