Macro de la bibliothèque C -NULL

Bibliothèque standard C - <stddef.h>

Description

Macro de la bibliothèque CNULLest la valeur d'une constante de pointeur nul.

  • NULLest une macro qui représente une constante de pointeur nul. Elle est généralement définie comme((void*)0), qui représente un pointeur nul pointant vers l'adresse mémoire 0.
  • En C++,NULLpeut être défini comme0ou0L, afin d’être compatible avec les entiers0Comparez.

Déclaration

Ci-dessous se trouve une déclaration de la macro NULL dépendante du compilateur.

#define NULL ((char *)0)

ou 

#define NULL 0L

ou 

#define NULL 0

Paramètre

  • N/D

Valeur de retour

  • N/D

Utilisation

  • NULLIl est utilisé pour indiquer qu’un pointeur ne pointe vers aucun objet ni aucune adresse valide. Par exemple, lorsque l’allocation dynamique de mémoire échoue, il est généralement renvoyéNULL。
  • NULLIl est également utilisé pour initialiser des variables pointeurs, indiquant qu’elles ne pointent actuellement vers aucune adresse valide.

Exemple

L’exemple suivant illustre l’utilisation de la macro NULL.

Exemple 1

#include <stddef.h>
#include <stdio.h>

int main ()
{
   FILE *fp;

   fp = fopen("file.txt", "r");
   if( fp != NULL )
   {
      printf("Fichier file.txt ouvert avec succès\n");
      fclose(fp);
   }

   fp = fopen("nofile.txt", "r");
   if( fp == NULL )
   {
      printf("Impossible d’ouvrir le fichier nofile.txt\n");
   }
   
   return(0);
}

Supposons que le fichierfile.txtexiste déjà, mais quenofile.txtn’existe pas. Compilons et exécutons le programme ci-dessus, ce qui produira les résultats suivants :

成功打开文件 file.txt
不能打开文件 nofile.txt

allocation dynamique de mémoire :

Exemple

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr = (int*)malloc(sizeof(int) * 10);

    if (ptr == NULL) {
        printf("Échec de l'allocation mémoire\n");
        return 1;
    }

    // Utiliser la mémoire allouée
    for (int i = 0; i < 10; i++) {
        ptr[i] = i;
    }

    // Libérer la mémoire allouée
    free(ptr);
    ptr = NULL; // Définir le pointeur sur NULL

    return 0;
}

Paramètres de fonction :

Exemple

#include <stdio.h>
#include <string.h>

void printString(const char *str) {
    if (str == NULL) {
        printf("La chaîne est NULL\n");
    } else {
        printf("Chaîne : %s\n", str);
    }
}

int main() {
    char *string1 = "Bonjour, le monde !";
    char *string2 = NULL;

    printString(string1); // Sortie : Chaîne : Bonjour, le monde !
    printString(string2); // Sortie : La chaîne est NULL

    return 0;
}

Notes

  • NULLC'est la façon standard de représenter un pointeur nul, en évitant l'utilisation directe de0ou(void*)0, afin d'améliorer la lisibilité et la maintenabilité du code.
  • Lors de la comparaison de pointeurs, vous devez utiliserNULL, plutôt que d'utiliser directement0。
  • En C++, vous pouvez utilisernullptrà la placeNULL, afin de fournir une vérification de type plus stricte.

Informations connexes

  • Dans la norme C++11, il a introduit lenullptrmot-clé, comme une constante de pointeur nul plus sûre au niveau des types.
  • NULLLa définition de la macro NULL peut varier légèrement selon le compilateur et l'implémentation de la bibliothèque standard, mais sa signification et son objectif restent les mêmes.

Bibliothèque standard C - <stddef.h>

autres extensions