Pointeurs nuls
Fait partie de la section Logique et Flux du Journey C++ de Coddy. Leçon 4 sur 56.
Lorsque vous déclarez un pointer, il ne pointe pas automatiquement vers quelque chose de pertinent. Un pointer non initialisé contient des adresses mémoire aléatoires, ce qui peut entraîner de graves erreurs si vous essayez de l’utiliser. C’est là que les null pointers deviennent essentiels pour une programmation sûre.
Un pointeur null est un pointeur qui ne pointe explicitement vers rien. En C++ moderne, vous créez un pointeur null en l’initialisant avec nullptr :
int* ptr = nullptr; // ptr est maintenant un pointeur nulLe mot-clé nullptr indique que le pointer ne pointe vers aucun emplacement mémoire valid. Cela est beaucoup plus sûr que de laisser un pointer non initialisé, car vous pouvez vérifier si un pointer est null avant de tenter de le dereference.
Avant d’utiliser un pointer, vous devez vérifier qu’il n’est pas null à l’aide d’une simple instruction if :
if (ptr != nullptr) {
// Sûr d'utiliser *ptr ici
int value = *ptr;
}Cette pratique empêche votre programme de planter en raison de l’accès à des emplacements mémoire invalides. Initialisez toujours les pointeurs à nullptr lorsque vous les déclarez, et vérifiez qu’ils ne valent pas null avant d’effectuer un déréférencement.
Défi
FacileCréez un programme qui montre une utilisation sûre des pointer en vérifiant la présence de null avant de les déréférencer.
L’entrée suivante sera fournie :
- Une
stringqui sera soit"valid", soit"null"
Votre programme doit :
- Déclarer une variable entière nommée
dataet l’initialiser avec la valeur42 - Déclarer un
pointernomméptr - Si l’entrée est
"valid", assigner l’adresse dedataàptr - Si l’entrée est
"null", assignernullptràptr - Utiliser une instruction if pour vérifier que
ptrn’est pasnullavant d’essayer de l’utiliser - Si le
pointern’est pasnull, afficher la valeur vers laquelle il pointe - Si le
pointerestnull, afficher un message de sécurité
Utilisez exactement le format de sortie suivant :
Value: [value]Pour les pointer null, utilisez ce format :
Pointer is null - cannot dereferenceEssayez vous-même
#include <iostream>
#include <string>
using namespace std;
int main() {
// Lire l'entrée
string input;
cin >> input;
// Déclarer la variable data
int data = 42;
// TODO: Écrivez votre code ici
// - Déclarer un pointeur nommé ptr
// - Vérifier l'entrée et assigner la valeur appropriée à ptr
// - Utiliser une instruction if pour vérifier et utiliser le pointeur en toute sécurité
return 0;
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et Flux
1Pointeurs et mémoire
Qu'est-ce qu'un pointeur ?Opérateur d'adresseOpérateur de déréférencementPointeurs nulsPointeurs et tableauxMémoire dynamique avec 'new'Libérer la mémoire avec 'delete'Récapitulatif - Pratique des pointeurs2Vecteurs (Tableaux dynamiques)
Introduction à std::vectorCréer un vecteurAjouter des élémentsAccéder aux élémentsTaille d'un vecteurItérer avec une boucle ForBoucle For basée sur l'intervalleSupprimer des élémentsRécapitulatif - Opérations sur les vecteurs3Projet : Outil de liste de tâches
Présentation du projetAjouter une tâcheEntraînez-vous par vous-même : Compilateur C++ en ligne