• [^] # Re: Evite le C++

    Posté par . En réponse au journal C(++) ?. Évalué à 1. Dernière modification le 01 octobre 2013 à 14:17.

    Oui, c’est exact.

    int foo (plop_t * plop){};
    ...
    foo(&plip);
    

    Là c’est un pointeur passé par valeur, pas du passage par référence.
    Le C n’a pas de passage par référence. Mais on peut le simuler via les pointeurs.

    C’est d‘ailleurs ce que dit l’article Wikipédia

    The same effect can be emulated in languages like C by passing a pointer (not to be confused with call-by-reference)
    [...]
    Even among languages that don't exactly support call-by-reference, many, including C and ML, support explicit references (objects that refer to other objects), such as pointers (objects representing the memory addresses of other objects), and these can be used to effect or simulate call-by-reference (but with the complication that a function's caller must explicitly generate the reference to supply as an argument).

    Mais ça reste une émulation du mécanisme, le résultat est le même que du passage par référence, mais ça reste du passage par valeur.