Menu
Coddy logo textTech

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.

challenge icon

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 :

  1. Déclarer un pointeur vers un entier nommé safe_ptr et l'initialiser à NULL
  2. Déclarer un pointeur vers un caractère nommé char_ptr et l'initialiser à NULL
  3. Vérifier si safe_ptr est NULL à l'aide d'une instruction if et afficher "safe_ptr is NULL" si c'est le cas
  4. Vérifier si char_ptr est NULL à l'aide d'une instruction if et afficher "char_ptr is NULL" si c'est le cas
  5. Afficher l'adresse mémoire stockée dans safe_ptr en utilisant printf avec le spécificateur de format %p
  6. Afficher l'adresse mémoire stockée dans char_ptr en utilisant printf avec 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;
}
quiz iconTestez-vous

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