Namespaces
Variants

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

nullptr

Beispiel

Zeigt, dass eine Kopie von nullptr ebenfalls als Nullzeigerkonstante verwendet werden kann.

#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)
Der Typ der vordefinierten Nullzeigerkonstante nullptr
(Typedef)
C++-Dokumentation für nullptr