bizarre equivalence pointeur /tableau !!! - C++ - Programmation
Marsh Posté le 27-09-2009 à 16:52:13
Parce que a[1] == a + 1 * sizeof(short) (a[2] == a + 2 * sizeof(short), etc)
Marsh Posté le 28-09-2009 à 09:40:12
un tableau c'ets :
Type Var[Size];
un pointeur c'ets
Type * Var;
La seule equivalence qui existe est que le nom d'un tableau
est aussi un poitneur vers son élément 0.
Attention pas tout mélanger
Marsh Posté le 28-09-2009 à 13:46:01
terom21 a écrit : il me semble que les pointeurs et tableaux sont équivalents |
Il n'y a d'equivalence entre pointeurs et tableaux en C et en C++ (il y en avait une en B, un ancetre
du C). Il y a un certain nombre de caracteristiques syntaxiques et semantiques qui entretiennent la
confusion:
- lors de la definition des parametres d'une fonction, un parametre de type tableau est ajuste en un
parametre de type pointeur;
- dans beaucoup de contextes (les exceptions en C sont les arguments de sizeof et de &, en C++ il
y en a plus, liees a la resolution des surcharges et a la deduction des arguments template), une valeur
de type tableau est convertie implicitement en un pointeur vers son premier element. Contrairement
a ce que certains pensent -- et ce qu'une formulation telle que celle de Joel peut laisser croire --
cette conversion n'est en rien liee au fait que le tableau soit une variable et donc nomme. Elle a lieu
pour n'importe quelle lvalue de type tableau et empeche de fait des rvalues de type tableau d'exister
(sauf en temps de sous-objet de rvalue de type struct).
Marsh Posté le 28-09-2009 à 14:35:01
Un Programmeur a écrit : |
merci pour le détail manquant
Marsh Posté le 12-10-2009 à 16:31:50
-_-' : Tu incrémentes a dans ta boucle. Pas besoin de a[i], ça fait double décalage....
Marsh Posté le 27-09-2009 à 16:00:23
bonjour
il me semble que les pointeurs et tableaux sont équivalents : mais la je ne comprends pas pourquoi j'obtiens des résultats differents :
L'éxcution donne :
merci
Message édité par terom21 le 27-09-2009 à 16:00:50