C'est le meme genre de raisonnement qui fait que
Code:
1 2 3 4 5
|
char a[10][65536];
char* ptr=&a[5][65535];
++ptr;
*ptr='x'; |
est du comportement indefini parce qu'on accede a l'element qui suit le dernier dans un tableau (donc avec une architecture segmentee et des segments de tailles 65536, le compilateur peut supposer tout en etant conforme que l'incrementation ne peut pas changer de segment).
Les pointeurs en C sont en fait des paires objet tableau de quelque chose, indice dans un tel objet. a a pour valeur le tableau a (de type char[10]), indice 0; &a a pour valeur le table de type char[1][10] dont le premier element est a, indice 0.