Namensräume
Varianten
Aktionen

nullptr, das Zeiger-Literal (seit C++11)

Von cppreference.com
< cpp‎ | Sprache
 
 
C++ Sprache
Allgemeine Themen
Kontrollfluss
Bedingte Ausführungsaussagen
if
Iterationsanweisungen (Schleifen)
for
Bereichs-for (C++11)
Sprunganweisungen
Funktionen
Funktionsdeklaration
Lambda-Funktionsausdruck
inline-Spezifizierer
Dynamische Ausnahmespezifikationen (bis C++17*)
noexcept-Spezifizierer (C++11)
Ausnahmen
Namensräume
Typen
Spezifizierer
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Speicherdauer-Spezifizierer
Initialisierung
Ausdrücke
Alternative Darstellungen
Literale
Boolesch - Ganzzahl - Gleitkommazahl
Zeichen - String - nullptr (C++11)
Benutzerdefinierte (C++11)
Dienstprogramme
Attribute (C++11)
Typen
typedef-Deklaration
Typalias-Deklaration (C++11)
Umwandlungen
Speicherzuweisung
Klassen
Klassenspezifische Funktionseigenschaften
explicit (C++11)
static

Spezielle Member-Funktionen
Templates
Sonstiges
 
 

Inhalt

[bearbeiten] Syntax

nullptr

[bearbeiten] Erklärung

Das Schlüsselwort nullptr bezeichnet das Zeiger-Literal. Es ist ein prvalue vom Typ std::nullptr_t. Es gibt implizite Konvertierungen von nullptr zu Nullzeigerwerten jedes Zeigertyps und jedes Zeigers auf ein Mitglied. Ähnliche Konvertierungen gibt es für jede Nullzeigerkonstante, die Werte vom Typ std::nullptr_t sowie das Makro NULL einschließt.

[bearbeiten] Schlüsselwörter

nullptr

[bearbeiten] Beispiel

Demonstriert, dass nullptr die Bedeutung einer Nullzeigerkonstante beibehält, auch wenn es kein Literal mehr ist.

#include <cstddef>
#include <iostream>
 
template<class T>
constexpr T clone(const T& t)
{
    return t;
}
 
void g(int*)
{
    std::cout << "Function g called\n";
}
 
int main()
{
    g(nullptr);        // Fine
    g(NULL);           // Fine
    g(0);              // Fine
 
    g(clone(nullptr)); // Fine
//  g(clone(NULL));    // ERROR: non-literal zero cannot be a null pointer constant
//  g(clone(0));       // ERROR: non-literal zero cannot be a null pointer constant
}

Ausgabe

Function g called
Function g called
Function g called
Function g called

[bearbeiten] Referenzen

  • C++23 Standard (ISO/IEC 14882:2024)
  • 7.3.12 Zeigerkonvertierungen [conv.ptr]
  • C++20 Standard (ISO/IEC 14882:2020)
  • 7.3.12 Zeigerkonvertierungen [conv.ptr]
  • C++17 Standard (ISO/IEC 14882:2017)
  • 7.11 Zeigerkonvertierungen [conv.ptr]
  • C++14 Standard (ISO/IEC 14882:2014)
  • 4.10 Zeigerkonvertierungen [conv.ptr]
  • C++11 Standard (ISO/IEC 14882:2011)
  • 4.10 Zeigerkonvertierungen [conv.ptr]

[bearbeiten] Siehe auch

implementierungsdefinierte Nullzeigerkonstante
(macro constant) [bearbeiten]
(C++11)
der Typ des Nullzeiger-Literals nullptr
(typedef) [bearbeiten]
C-Dokumentation für nullptr