Namensräume
Varianten
Aktionen

nullptr_t

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

nullptr_t ist der Typ der vordefinierten Nullzeigerkonstante, nullptr. Es ist ein eigenständiger Typ, der selbst kein Zeigertyp ist. Er kann in jeden Zeigertyp oder bool implizit konvertiert werden, und das Ergebnis ist der Nullzeigerwert dieses Typs bzw. false. Kein anderer Typ außer nullptr_t selbst kann in nullptr_t konvertiert oder explizit gecastet werden.

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

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

[edit] Beispiel

Demonstriere, dass nullptr_t ein eigenständiger 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

[edit] Referenzen

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

[edit] Siehe auch

implementierungsdefinierte Nullzeigerkonstante
(macro constant) [bearbeiten]
C++ Dokumentation für nullptr_t