Vordefinierte Nullzeigerkonstante (seit C23)
Von cppreference.com
Inhalt |
[bearbeiten] Syntax
nullptr
|
(seit C23) | ||||||||
[bearbeiten] Erklärung
Das Schlüsselwort nullptr bezeichnet eine vordefinierte Nullzeigerkonstante. Es ist ein Non-Lvalue vom Typ nullptr_t. nullptr kann in Zeigertypen oder bool konvertiert werden, wobei das Ergebnis der Nullzeigerwert dieses Typs oder false ist.
[bearbeiten] Schlüsselwörter
[bearbeiten] Beispiel
Demonstriert, dass eine Kopie von nullptr auch als Nullzeigerkonstante verwendet werden kann.
Führen Sie diesen Code aus
#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); // implementation-defined: maybe OK [[maybe_unused]] auto cloned_zero = 0; // g(cloned_zero); // Error DETECT_NULL_POINTER_CONSTANT(((void*)0)); DETECT_NULL_POINTER_CONSTANT(0); DETECT_NULL_POINTER_CONSTANT(nullptr); DETECT_NULL_POINTER_CONSTANT(NULL); // implementation-defined }
Mögliche Ausgabe
Function g called Function g called Function g called Function g called void* integer nullptr_t void*
[bearbeiten] Referenzen
- C23-Standard (ISO/IEC 9899:2024)
- 6.4.4.6 Vordefinierte Konstanten (S. 66)
[bearbeiten] Siehe auch
| implementierungsdefinierte Nullzeigerkonstante (macro constant) | |
| (C23) |
der Typ der vordefinierten Nullzeigerkonstante nullptr (typedef) |
| C++ Dokumentation für nullptr
| |