Comment vérifier Null en C: 7 étapes (avec photos)

Table des matières:

Comment vérifier Null en C: 7 étapes (avec photos)
Comment vérifier Null en C: 7 étapes (avec photos)

Vidéo: Comment vérifier Null en C: 7 étapes (avec photos)

Vidéo: Comment vérifier Null en C: 7 étapes (avec photos)
Vidéo: [ TUTO ] les BASES de GIMP en 10 POINTS ! Tutorial en français 2024, Peut
Anonim

En C, NULL est une constante symbolique qui pointe toujours vers un point inexistant de la mémoire. Bien que de nombreux programmeurs le considèrent comme égal à 0, il s'agit d'une simplification qui peut vous faire trébucher plus tard. Il est préférable de vérifier vos pointeurs directement par rapport à NULL et d'utiliser 0 dans d'autres contextes. Cela garde votre code propre et facile à comprendre, puisque vous saurez que vous travaillez avec des pointeurs chaque fois que vous voyez NULL.

Pas

Partie 1 sur 2: Exécution d'une vérification nulle

Vérifier Null dans C Étape 1
Vérifier Null dans C Étape 1

Étape 1. Utilisez le code de vérification nul standard

Ce qui suit est le moyen le plus évident d'écrire une vérification nulle. nous utiliserons ptr dans cet article comme nom du pointeur que vous vérifiez.

  • if(ptr == NULL)

    {

    // code si le pointeur est NULL

    } autre {

    // code si non NULL

    }

Vérifier Null dans C Étape 2
Vérifier Null dans C Étape 2

Étape 2. Testez n'importe quelle valeur sauf NULL

Parfois, il est plus pratique de tester l'inégalité à la place. Pas de surprise ici:

  • if (ptr != NULL) {

    // code si non NULL

    }

Vérifier Null dans C Étape 3
Vérifier Null dans C Étape 3

Étape 3. Écrivez d'abord le NULL pour éviter les erreurs (facultatif)

Le principal inconvénient de la méthode PTR == NULL est le risque que vous tapiez accidentellement ptr = NULL à la place, en attribuant la valeur NULL à ce pointeur. Cela peut causer un mal de tête important. Étant donné que le test d'(in)égalité traite les opérandes de manière symétrique, vous pouvez obtenir exactement le même résultat en écrivant si (NULL == ptr) au lieu. Ceci est plus résistant aux fautes de frappe, car un NULL accidentel = ptr crée une simple erreur de compilation.

Cela semble un peu gênant pour certains programmeurs, mais c'est parfaitement valable. L'approche que vous utilisez dépend uniquement de vos préférences personnelles et de la capacité de votre compilateur à détecter l'erreur if (ptr = NULL)

Vérifier Null dans C Étape 4
Vérifier Null dans C Étape 4

Étape 4. Testez si la variable est vraie

Un simple si (ptr) teste si ptr est VRAI. Il renverra FALSE si ptr vaut NULL, ou si ptr vaut 0. La distinction n'a pas d'importance dans de nombreux cas, mais sachez que ceux-ci ne sont pas identiques dans toutes les architectures.

L'inverse est si (!ptr), qui retournera TRUE si ptr est FALSE.

Partie 2 sur 2: Éviter les erreurs

Vérifiez Null à l'étape 5 de C
Vérifiez Null à l'étape 5 de C

Étape 1. Définissez un pointeur avant de rechercher NULL

Une erreur courante consiste à supposer qu'un pointeur nouvellement créé a une valeur NULL. Ce n'est pas vrai. Un pointeur non affecté pointe toujours vers une adresse mémoire, mais pas celle que vous avez spécifiée. Il est courant de définir les pointeurs nouvellement créés ou nouvellement libérés sur NULL pour s'assurer que vous n'utilisez pas cette adresse inutile par accident.

  • Evitez cette erreur:

    caractère *ptr;

    if(ptr == NULL)

    {

    //Cela renverra FALSE. Le pointeur a reçu une valeur valide.

    }

  • Écrivez plutôt:

    char *ptr = NULL; // Ceci affecte le pointeur à NULL

    if(ptr == NULL)

    {

    //Cela retournera TRUE si le pointeur n'a pas été réaffecté.

    }

Vérifier Null à l'étape C 6
Vérifier Null à l'étape C 6

Étape 2. Faites attention aux fonctions qui pourraient renvoyer NULL

Si une fonction peut renvoyer NULL, demandez-vous si c'est une possibilité et si cela causerait des problèmes plus tard dans votre code. Voici un exemple de la fonction malloc utilisant la vérification null (si (ptr)) pour s'assurer qu'il ne gère que les pointeurs avec des valeurs valides:

  • int *ptr = malloc(N * sizeof(int));

    si (ptr) {

    int je;

    pour (i = 0; i < N; ++i)

    ptr = je;

    }

Vérifier Null à l'étape 7 de C
Vérifier Null à l'étape 7 de C

Étape 3. Comprenez que NULL est 0 mais vous devez toujours utiliser NULL au lieu de 0 lorsque vous travaillez avec des pointeurs pour plus de clarté

Historiquement, C représentait NULL comme le nombre 0 (c'est-à-dire 0x00). De nos jours, cela peut devenir un peu plus compliqué et varie selon le système d'exploitation. Vous pouvez généralement vérifier NULL en utilisant ptr == 0, mais dans certains cas, cela peut poser problème. Peut-être plus important encore, l'utilisation de NULL montre clairement que vous travaillez avec des pointeurs pour d'autres personnes lisant votre code.

Des astuces

Vous pouvez utiliser cette boucle while d'enregistrement comme n'importe quelle autre: while (NULL == ptr) {

Conseillé: