Posté par 007 .
En réponse au journal J'adore Linus.
Évalué à 0.
Pour le compilateur, l'adresse 0 (ou "(void *)0") est une adresse comme une autre.
Si tu veux exécuter une fonction à cette adresse, le compilateur n'aura rien à dire.
Si tu veux déférencer un pointeur pour lire ce qu'il y a à l'adresse 0, le compilateur te laisse totalement libre de le faire aussi.
Par contre le noyau fera planter le programme vite fait. Mais pas le compilateur.
btw, la norme du C ne dis pas que 0 ou "(void *)0" est un pointeur invalide. La norme C ("#include <stdlib.h>") dit uniquement que NULL est un pointeur invalide et cette norme ne donne pas la valeur de NULL (ce qui est normal puisque c'est invalide).
[^] # Re: Petites precisions
Posté par 007 . En réponse au journal J'adore Linus. Évalué à 0.
Si tu veux exécuter une fonction à cette adresse, le compilateur n'aura rien à dire.
Si tu veux déférencer un pointeur pour lire ce qu'il y a à l'adresse 0, le compilateur te laisse totalement libre de le faire aussi.
Par contre le noyau fera planter le programme vite fait. Mais pas le compilateur.
btw, la norme du C ne dis pas que 0 ou "(void *)0" est un pointeur invalide. La norme C ("#include <stdlib.h>") dit uniquement que NULL est un pointeur invalide et cette norme ne donne pas la valeur de NULL (ce qui est normal puisque c'est invalide).