Sebastian W. schrieb:
> Also die Deklaration klappt so schonmal ohne fehler. Allerdings habe ich
> beim auslesen der Werte nun ein Problem. Wie komme ich über den Pointer
> nun an die einzelnen Werte des Arrays?
Hallo Sebastian!
Anbei mal ein komplettes Beispiel:
1 | int bla[3][4][5]; // nicht-lokale Variable wird mit 0 initialisiert
|
2 |
|
3 | ...
|
4 | int (*foo)[4][5] = &bla[0]; // Oder &bla[1] für die nächste Bank ...
|
5 |
|
6 | (*foo)[1][2] = 23; // Zugriff auf Arrayelement
|
Mein Beispiel war komplett, wurde aber von der Eingabemaske leider als
vermutlicher Spam erkannt!? So schlecht war der Code ja nun aber nicht!
Bei der Zuweisung von bla and foo schreibt man wohl besser zur
Verdeutlichung &bla[0], also Adresse von Arrayplatz [0] von bla, auch
wenn das zu bla identisch ist. Denn schon für bla[1] ist es das nicht
mehr. Es gibt hier drei Bänke (erster Index) mit 4 x 5 Plätzen.
Zugriff erfolgt dann durch Dereferenzierung von foo und einem
entsprechenden Arrayzugriff (bitte NICHT über foo[0][x][y], das ist zwar
erlaubt, aber verwirrt den Leser]. Deine originale Indexierung oben
hatte allerdings die "Banknummer" hinten, während hier die "Banknummer"
vorn steht.
Je nach Anwendungsfall kann natürlich auch ein Zeiger auf eine Struktur
vorteilhafter (weil lesbarer) sein, wie Michael S. es vorschlug, als so
ein Arraykonstrukt. Nicht so gut ist allerdings die Form, alles in ein
eindimensionales Array zu stopfen, denn da macht man leider schnell
Fehler.
C ist eine sehr schöne Sprache; wenn man sie richtig anwendet (mit gnu
extensions), kann man Quelltexte schreiben, die Gedichten ähneln (z.B.
Teile des Kernels)!
Weiterhin viel Erfolg
flipsi
PS: Meine Aussagen erheben keinen Anspruch auf Wahrheit, denn ich bin
leider (noch) kein C Language-Lawyer; die findest Du in einschlägigen
newsgroups!