Salut, tardif.
Normal que l'on puisse indiquer un indice supérieur à la taille du tableau.
Le compilateur traduit tout cela en décalage de pointeur. Depuis l'adresse de base du tableau, on décale le pointeur de indice*taille_élément et on tombe sur l'élément désiré.
C'est pour cela que le premier élément est numéroté 0, c'est pour cela que lorsque l'on réserve un tableau, on est sur que les éléments se suivent en mémoire, et c'est pour cela que les tableaux peuvent produire des 'fuites' ou des 'failles'.
Pour un tableau de 10 éléments, si je demande le n°11 (tab[10]), je tape dans la mémoire juste derrière le tableau. A moins de connaitre exactement le contenu de la mémoire et de parfaitement maitriser la manip, le résultat sera n'importe quoi, voire même autre chose.