Natknąłem się na dziwne doświadczenie w programowaniu C. Rozważ ten kod:
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;
}
Podczas kompilacji i uruchamiania nie otrzymuję żadnych błędów ani ostrzeżeń. Jak powiedział mój wykładowca, indeks tablicy -1
uzyskuje dostęp do innej zmiennej. Nadal jestem zdezorientowany, dlaczego do cholery język programowania ma taką możliwość? Chodzi mi o to, dlaczego zezwalać na ujemne wskaźniki tablicowe?
-1
podtablicy jest całkowicie poprawnym sposobem na odniesienie się do elementu przed tą tablicą w większej tablicy. Po drugie, jeśli indeks jest nieprawidłowy, program jest nieprawidłowy, ale w większości implementacji dostaniesz ciche, złe zachowanie, a nie błąd poza zakresem.