Prüfen, ob der Zeiger in C++ NULL ist

Jinku Hu 12 Oktober 2023
  1. Vergleichen Sie mit nullptr, um zu prüfen, ob ein Zeiger in C++ NULL ist
  2. Verwenden Sie den Vergleich mit 0, um zu prüfen, ob der Zeiger in C++ NULL ist
  3. Zeigerwert als Bedingung verwenden, um zu prüfen, ob ein Zeiger in C++ NULL ist
Prüfen, ob der Zeiger in C++ NULL ist

In diesem Artikel werden mehrere Methoden demonstriert, mit denen überprüft werden kann, ob ein Zeiger in C++ null ist.

Vergleichen Sie mit nullptr, um zu prüfen, ob ein Zeiger in C++ NULL ist

Die Sprache C++ bietet mehrere Low-Level-Funktionen zur direkten Speichermanipulation und spezifiziert das Konzept des Zeiger, d.h. des Objekts, das auf eine Speicheradresse zeigt. Normalerweise sollte ein Zeiger auf ein Objekt zeigen, das vom ausführenden Programm verwendet wird. Man kann einen Zeiger aber auch als Null-Zeiger deklarieren, der auf kein Objekt zeigt.

Ein Null-Zeiger wird durch Zuweisung des literalen nullptr-Wertes oder mit der ganzen Zahl 0 initialisiert. Beachten Sie jedoch, dass modernes C++ vorschlägt, die 0-Initialisierung von Zeigern zu vermeiden, da sie zu unerwünschten Ergebnissen führen kann, wenn überladene Funktionen verwendet werden. Im folgenden Beispiel prüfen wir, ob der Zeiger nicht gleich einem nullptr ist, und wenn die Bedingung erfüllt ist, können wir damit operieren.

#include <iostream>

using std::cout;
using std::endl;

#define SIZE 123

int main() {
  char *arr = (char *)malloc(SIZE);

  if (arr != nullptr) {
    cout << "Valid pointer!" << endl;
  } else {
    cout << "NULL pointer!" << endl;
  }

  free(arr);
  return EXIT_SUCCESS;
}

Ausgabe:

Valid pointer!

Verwenden Sie den Vergleich mit 0, um zu prüfen, ob der Zeiger in C++ NULL ist

Es gibt auch eine Präprozessorvariable namens NULL, die ihre Wurzeln in der C-Standardbibliothek hat und oft in Legacy-Code verwendet wird. Beachten Sie, dass es nicht empfehlenswert ist, NULL in der zeitgenössischen C++-Programmierung zu verwenden, da dies der Initialisierung durch den Integer 0 entspricht und die Probleme, wie im vorigen Abschnitt beschrieben, auftreten können. Dennoch können wir prüfen, ob ein Zeiger null ist, indem wir ihn mit 0 vergleichen, wie im nächsten Codebeispiel gezeigt wird:

#include <iostream>

using std::cout;
using std::endl;

#define SIZE 123

int main() {
  char *arr = (char *)malloc(SIZE);

  if (arr != 0) {
    cout << "Valid pointer!" << endl;
  } else {
    cout << "NULL pointer!" << endl;
  }

  free(arr);
  return EXIT_SUCCESS;
}

Ausgabe:

Valid pointer!

Zeigerwert als Bedingung verwenden, um zu prüfen, ob ein Zeiger in C++ NULL ist

Nullzeiger werden als false ausgewertet, wenn sie in logischen Ausdrücken verwendet werden. Daher kann man einen gegebenen Zeiger in die if-Anweisungsbedingung setzen, um zu prüfen, ob es sich um eine Null handelt. Beachten Sie, dass die Dereferenzierung von Null-Zeigern zu einem undefinierten Verhalten führt, das in den meisten Fällen zu einem anormalen Programmabbruch führt.

#include <iostream>

using std::cout;
using std::endl;

#define SIZE 123

int main() {
  char *arr = (char *)malloc(SIZE);

  if (arr) {
    cout << "Valid pointer!" << endl;
  } else {
    cout << "NULL pointer!" << endl;
  }

  free(arr);
  return EXIT_SUCCESS;
}

Ausgabe:

Valid pointer!
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - C++ Pointer