Mehrdimensionale Vektoren
-
Hallo Zusammen
Ich habe ein zweidimensionales Array a[2][5](2 Zeilen und 5 Spalten).
Wenn ich das Array mit Werten fülle und dan ausgeben will, verstehe ich die Ausgabe nichtchar a[2][5] = { {12,13,14,15,16}, {3,4,5,6,7} }; char b,c,d,e; b = a[1][4]; c = *(a+1)[3]; printf("%d\n",b); printf("%d\n",c);
Die Ausgabe ist:
7
40
Die erste Ausgabe versteh ich, jedoch die zweite nicht. Kann mir jemand das erklären??
Wenn ich(*(a+1))[3]
schreibe dann wäre die Ausgabe: 6.
-
Postfixoperatoren haben Vorrang vor Präfixoperatoren.
*(a+1)[3] // ist äquivalent zu *((a+1)[3]) // bzw. *(*((a+1)+3)) // bzw. *(*(a+4)) // bzw. a[4][0]
Das Array a hat nur 2 Elemente, a[4] greift folglich auf ein nicht Existierendes zu, es ist UB.