Folco (./14) :
pourquoi, puisqu'un tableau et un pointeur sont la même chose
Ah non, non, non

j'ai passé 2 putains de jours sur un bug dû à cette différence!
PpHd (./15) :
En fait, c'est que l'arithmétique de pointeurs et l'indexage de tableau sont la même chose: a[b] = *(a+b) (et c'est la norme C qui l'impose !)
oui mais si a est déclaré comme tableau, ça marche SEULEMENT pour des nombres positifs! Enfin presque, je m'explique:
avec les déclarations:
int a[]
int *b=a;
int offset;
a+1 est défini, et donne le même code asm que b+1
MAIS
a-1 est TOTALEMENT indéfini et le compilateur peut générer ce qu'il veut, de nop à reboot en passant par system("format c: /y")

alors que b-1 fonctionne
a noter que dans tous les cas, a+offset et a-offset ne pose pas de problème et fonctionne comme b+offset et b-offset, car le compilo ne peut rien optimiser!
On a rencontré un compilateur embarqué qui générait de la merde (non destructive, mais non fonctionnelle

) pour l'expression tableau-offset. Et on n'a pas pu dire que c'était un bug de compilo, parce que ce n'est pas défini par l'ISO C. Mon collègue en a eu la confirmation sur le newsgroup comp.lang.c

c'est la seule différence que je connaisse entre tableau et pointeur
