Namespaces
Variants

nullptr_t

From cppreference.net
< c ‎ | types
Definiert im Header <stddef.h>
typedef typeof ( nullptr ) nullptr_t ;
(seit C23)

nullptr_t ist der Typ der vordefinierten Nullzeigerkonstante nullptr . Es handelt sich um einen eigenständigen Typ, der selbst kein Zeigertyp ist. Er kann implizit konvertiert werden zu jedem Zeigertyp oder bool , und das Ergebnis ist der Nullzeigerwert dieses Typs oder false entsprechend. Kein anderer Typ als nullptr_t selbst kann zu nullptr_t konvertiert oder explizit gecastet werden.

sizeof ( nullptr_t ) und alignof ( nullptr_t ) sind gleich sizeof ( void * ) beziehungsweise alignof ( void * ) .

nullptr_t hat nur einen gültigen Wert, nämlich nullptr . Die Objektdarstellung von nullptr ist identisch mit der von ( void * ) 0 . Wenn eine Lvalue-Konvertierung einen nullptr_t -Wert mit einer anderen Objektdarstellung erzeugt, ist das Verhalten undefiniert.

Beispiel

Demonstrieren Sie, dass nullptr_t ein eigener Typ ist.

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

Ausgabe:

void*
other
nullptr_t

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.21.2 Der nullptr_t-Typ (S: 315-316)

Siehe auch

implementierungsdefinierte Nullzeigerkonstante
(Makrokonstante)
C++-Dokumentation für nullptr_t