Ich habe eine seltsame Erfahrung in der C-Programmierung gemacht. Betrachten Sie diesen Code:
int main(){
int array1[6] = {0, 1, 2, 3, 4, 5};
int array2[6] = {6, 7, 8, 9, 10, 11};
printf("%d\n", array1[-1]);
return 0;
}
Wenn ich dies kompiliere und ausführe, erhalte ich keine Fehler oder Warnungen. Wie mein Dozent sagte, -1
greift der Array-Index auf eine andere Variable zu. Ich bin immer noch verwirrt, warum um alles in der Welt hat eine Programmiersprache diese Fähigkeit? Ich meine, warum negative Array-Indizes zulassen?
-1
eines Subarrays eine absolut gültige Möglichkeit ist, auf das Element vor diesem Array im größeren Array zu verweisen. Der andere Grund ist, dass das Programm ungültig ist, wenn der Index ungültig ist. In den meisten Implementierungen wird jedoch ein stummes Fehlverhalten und kein Fehler außerhalb des Bereichs angezeigt.