Pointeurs NULL
Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 5 sur 63.
Parfois, vous devez déclarer un pointeur mais vous n'avez pas d'adresse mémoire valide à lui assigner immédiatement. Dans ces situations, il est important d'initialiser le pointeur à une valeur spéciale appelée NULL.
Un pointeur NULL est un pointeur qui ne pointe vers aucune adresse mémoire valide. En C, NULL est généralement défini comme 0 ou (void*)0. Lorsque vous initialisez un pointeur à NULL, vous indiquez explicitement qu'il ne pointe actuellement vers rien d'utile.
int *ptr = NULL; // Initialiser le pointeur à NULL
printf("%p", ptr); // Cela affichera 0 ou (nil)Initialiser les pointeurs à NULL est considéré comme une bonne pratique de programmation car cela empêche votre pointeur de contenir des valeurs résiduelles aléatoires. Un pointeur non initialisé peut contenir n'importe quelle adresse mémoire aléatoire, ce qui pourrait entraîner un comportement imprévisible si vous essayez accidentellement de l'utiliser.
Vous pouvez vérifier si un pointeur est NULL avant de l'utiliser, ce qui aide à prévenir les plantages et rend votre code plus robuste. Cette vérification de sécurité devient particulièrement importante à mesure que vos programmes deviennent plus complexes.
Défi
FacileÉcrivez un programme C qui démontre l'initialisation et la vérification appropriées d'un pointeur NULL. Votre programme doit :
- Déclarer un pointeur vers un entier nommé
safe_ptret l'initialiser à NULL - Déclarer un pointeur vers un caractère nommé
char_ptret l'initialiser à NULL - Vérifier si
safe_ptrest NULL à l'aide d'une instruction if et afficher "safe_ptr is NULL" si c'est le cas - Vérifier si
char_ptrest NULL à l'aide d'une instruction if et afficher "char_ptr is NULL" si c'est le cas - Afficher l'adresse mémoire stockée dans
safe_ptren utilisantprintfavec le spécificateur de format%p - Afficher l'adresse mémoire stockée dans
char_ptren utilisantprintfavec le spécificateur de format%p
Votre sortie doit afficher les résultats dans le format suivant :
safe_ptr is NULL
char_ptr is NULL
safe_ptr address: [address]
char_ptr address: [address]Les adresses mémoire réelles s'afficheront comme 0, (nil), ou une représentation NULL similaire selon votre système, mais le format et les étiquettes doivent correspondre exactement à ce qui est indiqué ci-dessus.
Aide-mémoire
Un pointeur NULL est un pointeur qui ne pointe vers aucune adresse mémoire valide. En C, NULL est généralement défini comme 0 ou (void*)0.
Initialisez les pointeurs à NULL pour éviter les valeurs résiduelles aléatoires :
int *ptr = NULL; // Initialiser le pointeur à NULL
printf("%p", ptr); // Cela affichera 0 ou (nil)Vérifiez si un pointeur est NULL avant de l'utiliser pour éviter les plantages :
if (ptr == NULL) {
// Sûr pour gérer le cas NULL
}Essayez vous-même
#include <stdio.h>
int main() {
// TODO: Écrivez votre code ici
// Déclarez et initialisez vos pointeurs
// Vérifiez si les pointeurs sont NULL
// Affichez la sortie requise
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 Logic & Flow
1Les bases des pointeurs
Qu'est-ce qu'un pointeur ?Déclaration de pointeursL'opérateur d'adresse (&)L'opérateur de déréférencement (*)Pointeurs NULLRécapitulatif : Les bases des pointeurs4Projet : Utilitaire de texte simple
Présentation du projetCompter les caractères2Pointeurs et Tableaux
Noms de tableaux comme pointeursÉléments de tableau - PointeursArithmétique des pointeursComparaison de pointeursRécapitulatif : Parcours de tableau par pointeur5Pointeurs et fonctions
Passage par valeurPassage de pointeurs aux fonctionsModifier des variables via des pointeursUn exemple classique : SwapPassage de tableaux aux fonctionsRécapitulatif : Pointeurs comme arguments de fonction3Tableaux de caractères et chaînes
Les chaînes comme tableaux de charLe terminateur nulSaisie de chaînes avec scanfUtilisation de strlen()Utilisation de strcpy()Utilisation de strcat()Utilisation de strcmp()Récapitulatif : Fonctions de base sur les chaînes