Predefined null pointer constant (since C23)
From cppreference.net
Inhaltsverzeichnis |
Syntax
nullptr
|
(seit C23) | ||||||||
Erklärung
Das Schlüsselwort
nullptr
bezeichnet eine vordefinierte Nullzeiger-Konstante. Es ist ein
Nicht-Lvalue
vom Typ
nullptr_t
.
nullptr
kann in
Zeigertypen
oder
bool
konvertiert werden, wobei das Ergebnis jeweils der Nullzeigerwert dieses Typs oder
false
ist.
Schlüsselwörter
Beispiel
Zeigt, dass eine Kopie von
nullptr
ebenfalls als Nullzeigerkonstante verwendet werden kann.
Diesen Code ausführen
#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); // implementationsdefiniert: möglicherweise OK [[maybe_unused]] auto cloned_zero = 0; // g(cloned_zero); // Fehler DETECT_NULL_POINTER_CONSTANT(((void*)0)); DETECT_NULL_POINTER_CONSTANT(0); DETECT_NULL_POINTER_CONSTANT(nullptr); DETECT_NULL_POINTER_CONSTANT(NULL); // implementationsdefiniert }
Mögliche Ausgabe:
Function g called Function g called Function g called Function g called void* integer nullptr_t void*
Referenzen
- C23-Standard (ISO/IEC 9899:2024):
-
- 6.4.4.6 Vordefinierte Konstanten (S: 66)
Siehe auch
|
Implementationsdefinierte Nullzeigerkonstante
(Makrokonstante) |
|
|
(C23)
|
Der Typ der vordefinierten Nullzeigerkonstante
nullptr
(Typedef) |
|
C++-Dokumentation
für
nullptr
|
|