• [^] # Re: Oula plein de chose dans le poste

    Posté par . En réponse au message L'opérateur unaire * me laisse perplexe (pointeurs sur fonctions principalement). Évalué à 3.

    Non, c'est pareil, malloc retourne un void, et donc le compilo gueulerait disant que tu associe un void à ton pointeur de tableau qui est de type pf. Le cast (pf)malloc dis au compilo que tu sait ce que tu fais et que le void* est comme un pf* (on appelle ça transtypage d'une variable).

    Dans ce cas précis, c'est inutile. Le compilateur ne se plaint jamais lorsqu'on affecte un pointeur void vers un pointeur d'un type quelconque et vice-versa. C'est vrai au moins en C99. Ça semble être aussi le cas en C89 mais je ne dispose pas du document correspondant :

    Extrait de n1256

    6.5.4 Cast operators
    1. [...]
    2. [...]
    3. Conversions that involve pointers, other than where permitted by the constraints of
    6.5.16.1, shall be specified by means of an explicit cast.

    6.5.16.1 Simple assignment
    Constraints
    One of the following shall hold:
    — [...]
    — [...]
    — [...]
    — one operand is a pointer to an object or incomplete type and the other is a pointer to a
    qualified or unqualified version of void, and the type pointed to by the left has all
    the qualifiers of the type pointed to by the right;