Pointeur NULL :
La constante entière zéro(0) a des significations différentes selon son utilisation. Dans tous les cas, il s’agit d’une constante entière ayant la valeur 0, elle est juste décrite de différentes manières.
Si un pointeur quelconque est comparé à 0, alors il s’agit de vérifier si le pointeur est un pointeur nul. Ce 0 est alors désigné comme une constante de pointeur nul. La norme C définit que 0 est typé vers (void *) est à la fois un pointeur nul et une constante de pointeur nul.
La macro NULL est fournie dans le fichier d’en-tête « stddef.h ».
Voici les façons de vérifier un pointeur NULL :
- NULL est défini pour comparer égal à un pointeur nul comme :
if(pointer == NULL)
- L’instruction if ci-dessous vérifie implicitement « n’est pas 0 », donc on inverse cela pour signifier « est 0 » comme:
if(!pointer)
Caractères nuls(‘\0’):
‘\0’ est défini comme étant un caractère nul. C’est un caractère dont tous les bits sont mis à zéro. Cela n’a rien à voir avec les pointeurs. ‘\0’ est (comme tous les littéraux de caractères) une constante entière avec la valeur zéro.
- L’instruction ci-dessous vérifie si le pointeur de chaîne pointe sur un caractère nul.
if (!*string_pointer)
L’instruction ci-dessous vérifie si le pointeur de chaîne pointe sur un caractère non nul.
if (*string_pointer)
En langage C, la chaîne n’est rien d’autre qu’un tableau de type char. Elle stocke chacun des caractères dans un espace mémoire de 1 octet. Chaque tableau se termine par ‘\0’ ou caractère nul mais si nous stockons un ‘0’ à l’intérieur d’une chaîne, les deux ne sont pas les mêmes selon le langage C. ‘0’ signifie 48 selon la table ASCII alors que ‘\0’ signifie 0 selon la table ASCII.
Below is the C program to print the value of ‘\0’ and ‘0’:
#include <stdio.h>
int
main()
{
printf
(
"\\0 is %d\n"
,
'\0'
);
printf
(
"0 is %d\n"
,
'0'
);
return
0;
}
\0 is 00 is 48