Posté par 007 .
En réponse au journal J'adore Linus.
Évalué à 0.
> c'est bien le compilateur (ou le front-end, en tout cas c'est pas la lib) qui a la charge de convertir ce 'null pointer constant' en 'null pointer'.
Mouaif...
J'ai beaucoup codé en C (plus actuellement mais je vais m'y remettre) et j'ai jamais vu un compilateur traiter différement NULL ou "(void*)0" ou "(void*)1" ou "(void*)29898".
Aucun traitement particulier n'est fait pour NULL et ça "Segmentation fault" de la même façon (normal).
Tu peux essayer d'autres exemples, NULL ou (void *)0 ou 0 est traité comme un pointeur "normal".
[^] # Re: Petites precisions
Posté par 007 . En réponse au journal J'adore Linus. Évalué à 0.
Mouaif...
J'ai beaucoup codé en C (plus actuellement mais je vais m'y remettre) et j'ai jamais vu un compilateur traiter différement NULL ou "(void*)0" ou "(void*)1" ou "(void*)29898".
Exemple :
tmp1.c :
#include <stdio.h>
int main(void) {
char *p = NULL ;
printf("%c\n", *p) ;
return 0 ;
}
tmp2.c :
#include <stdio.h>
int main(void) {
char *p = (char *)2 ;
printf("%c\n", *p) ;
return 0 ;
}
gcc -o tmp1 tmp1.c
gcc -o tmp2 tmp2.c
cmp -l tmp1 tmp2
900 0 2
Aucun traitement particulier n'est fait pour NULL et ça "Segmentation fault" de la même façon (normal).
Tu peux essayer d'autres exemples, NULL ou (void *)0 ou 0 est traité comme un pointeur "normal".