nullptr_t
| 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) | |
| C++ Dokumentation für nullptr_t
| |