Oui, bien sûr que c'est normal. Le C cache peu de choses par rapport à l'assembleur qui est en dessous, ce n'est pas son but. Ceci dit, pour le programmeur qui voulait pas se prendre la tête, c'est râté !
> Dans un cas, le compilo considère que tu voudrais passer par valeur des tableaux à 2 dimensions.
Même pas. Aucun des deux n'est un passage par valeur.
Dans un cas, le compilateur voit un tableau de pointeurs sur tableaux, et il accède à t[i][j] par *(*(t + i) +j), et dans l'autre, c'est un vrai tableau de tableau (contigüs), et on y accède avec *((int *)t + i + j*42) (aux confusions entre i et j près, j'me mélange toujours).
> Si tu es sûr de ce que tu fais tu peux toujours caster.
Je serais curieux d'avoir un exemple où le cast marche !
Encore un volontaire pour dire que le C, c'est simple ?
(je parlerai pas trop du C++, j'ai beaucoup pratiqué ce language, mais sans l'avoir appris vraiment correctement)
[^] # Re: Le C++ peut être simple
Posté par Matthieu Moy (site web personnel) . En réponse au journal Un langage pour les nuls? Le langage D!. Évalué à 2.
Oui, bien sûr que c'est normal. Le C cache peu de choses par rapport à l'assembleur qui est en dessous, ce n'est pas son but. Ceci dit, pour le programmeur qui voulait pas se prendre la tête, c'est râté !
> Dans un cas, le compilo considère que tu voudrais passer par valeur des tableaux à 2 dimensions.
Même pas. Aucun des deux n'est un passage par valeur.
Dans un cas, le compilateur voit un tableau de pointeurs sur tableaux, et il accède à t[i][j] par *(*(t + i) +j), et dans l'autre, c'est un vrai tableau de tableau (contigüs), et on y accède avec *((int *)t + i + j*42) (aux confusions entre i et j près, j'me mélange toujours).
> Si tu es sûr de ce que tu fais tu peux toujours caster.
Je serais curieux d'avoir un exemple où le cast marche !
Encore un volontaire pour dire que le C, c'est simple ?
(je parlerai pas trop du C++, j'ai beaucoup pratiqué ce language, mais sans l'avoir appris vraiment correctement)