• [^] # Re: Petites precisions

    Posté par . En réponse au journal J'adore Linus. Évalué à 2.

    La norme ne dit pas que ça doit être traité spécialement, mais que ça peut.
    An integer may be converted to any pointer type. Except as previously specified, the result is implementation-defined, might not be properly aligned, and might not point to an entity of the referenced type.
    (le previously defined, c'est ce que je cite plus haut)

    Le cast d'un entier en pointeur est dépendant de l'implémentation, sauf pour le cas des 'null pointer constant'. Dans ce cas, ça produit un 'null pointer' et la norme spécifie alors plus de choses, notamment le résultat des comparaisons et conversions de null pointer entre eux ou avec des pointeurs valides.

    Déréférencer un (char *)2, ça pourrais marcher, c'est pas incompatible avec la norme. Déréférencer un null pointer, c'est jamais valide, ça produit un UB (undefined behavior).