Aaaah, les NULL, nil, et autres 0x0...
Tout le monde sait que NULL, c'est 0. ok.
En fait, en C, C++, objc et consorts, la terminologie pour la valeur zéro est fonction du type de la variable qui va l'utiliser. C'est à dire :
'\0' = zéro pour un type char
0 = zéro pour un type numérique simple (int ou long)
0.0 pour un float ou un double
NULL pour un type pointeur.
Tu vas dire : "il me prend pour une bille, l'animal, parce que ca, je le sais deja et en plus, c'est pas ma quesion". Oui, mais c'est ma réponse.
En fait, NULL est défini comme étant :
(void *) 0L
c'est à dire la valeur zéro codée sur un long et convertie en pointeur indéfini.
En fait, c'est la méthode officielle de description de NULL, puisque par définition en C "toute valeur d'un type donné devant etre affectée à une variable d'un autre type doit faire l'objet d'un cast dans le type récepteur" (phrase de moi-meme à moi-meme à l'époque ou j'avais des warnings de partout sur mon ATARI ST

.
Comme tu veux affecter la valeur zéro à un pointeur, tu dois passer par un cast de type pointeur.
Ca, c'est la terminologie officielle. Maintenant, en fonction des systemes, NULL est défini de facon propre "(void*) 0L" ou de facon sale "0". FreeBSD n'est pas le + propre de tous, il n'y a qu'à faire un grep de NULL dans /usr/include sur tous les headers pour s'en rendre compte......
j'espère ke ca repond un chouillat à ta question.
bye.