Gast
#4900418
Hallo,
ich habe gerade ein kleines Verständnisproblem.
Es gilt ja in C und C++, dass a[n] äquivalent ist zu n[a]. Leider komme
ich nicht darauf, warum das so ist.
Beispiel:
a ist ein int-Array, welches an Adresse 1000 (dez.) beginnt, int-Größe
im Beispiel 4 Bytes.
int a[]{1, 2, 3};
1000 1
1004 2
1008 3
Bei a[2] also sinngemäß
a + 2 * sizeof(int) = 1000 + 2 * 4 = 1008
a[2] -> *(a + 2 * sizeof(int)) -> 3
Aber warum funktioniert das umgekehrt?
2[a]
2 + a * sizeof(int) = 2 + 1000 * 4 = 4002 (?)
a "degeneriert" hier doch zu einem int*, bei Addition müsste also 1000 *
4 addiert werden, nicht 1000?
Ist aber offensichtlich nicht so, denn sonst wäre a[2] ja nicht gleich
2[a].