Comment vérifier si le pointeur est NULL en C++
-
Comparer avec
nullptr
pour vérifier si un pointeur estNULL
en C++ -
Utiliser la comparaison avec
0
pour vérifier si le pointeur estNULL
en C++ -
Utiliser la valeur du pointeur comme condition pour 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!
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