Comment vérifier si le pointeur est NULL en C++

Jinku Hu 12 octobre 2023
  1. Comparer avec nullptr pour vérifier si un pointeur est NULL en C++
  2. Utiliser la comparaison avec 0 pour vérifier si le pointeur est NULL en C++
  3. Utiliser la valeur du pointeur comme condition pour vérifier si le pointeur est NULL en C++
Comment vérifier si le pointeur est NULL en C++

Cet article présente plusieurs méthodes pour vérifier si un pointeur est nul en C++.

Comparer avec nullptr pour vérifier si un pointeur est NULL en C++

Le langage C++ fournit de multiples fonctionnalités de bas niveau pour manipuler directement la mémoire et spécifie le concept de pointeur, qui est l’objet pointant vers une adresse mémoire. Habituellement, un pointeur doit pointer vers un objet qui est utilisé par le programme en cours d’exécution. Cependant, on peut aussi déclarer un pointeur comme étant un pointeur nul qui ne pointe vers aucun objet.

Un pointeur nul est initialisé en lui attribuant la valeur littérale nullptr ou avec l’entier 0. Notez, cependant, que le C++ moderne suggère d’éviter l’initialisation des pointeurs avec un entier 0 car cela peut conduire à des résultats non désirés lors de l’utilisation de fonctions surchargées. Dans l’exemple suivant, nous vérifions si le pointeur n’est pas égal à un nullptr, et si la condition est remplie, nous pouvons opérer dessus.

#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;
}

Production :

Valid pointer!

Utiliser la comparaison avec 0 pour vérifier si le pointeur est NULL en C++

Il existe également une variable de préprocesseur appelée NULL, qui a ses racines dans la bibliothèque standard C et qui est souvent utilisée dans le code existant. Gardez à l’esprit qu’il n’est pas recommandé d’utiliser NULL dans la programmation C++ contemporaine car cela équivaut à une initialisation par l’entier 0, et les problèmes peuvent survenir comme indiqué dans la section précédente. Néanmoins, nous pouvons vérifier si un pointeur est nul en le comparant à 0 comme le montre l’exemple de code suivant :

#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;
}

Production :

Valid pointer!

Utiliser la valeur du pointeur comme condition pour vérifier si le pointeur est NULL en C++

Les pointeurs nuls sont évalués comme false lorsqu’ils sont utilisés dans des expressions logiques. Ainsi, on peut mettre un pointeur donné dans la condition d’instruction if pour vérifier s’il est nul. Notez que le déréférencement des pointeurs nuls conduit à un comportement indéfini, ce qui entraîne une fin anormale du programme dans la plupart des cas.

#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;
}

Production :

Valid pointer!
Auteur: 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

Article connexe - C++ Pointer