Mehrdimensionale Arrays
-
Hallo.
Wie legt eigentlich der Compiler mehrdimensionale Arrays an bzw wie wird auf sie zugegriffen?
Bei einfachen ist es ja logisch:
array[i] -----> Basisaddresse von "array" + i * Typgröße
Danke.

Grüße,
Flo
-
Mehrdimensionale Arrays werden üblicherweise auch als eindimensionales gehandhabt und die Offsets halt dazu gerechnet. (Der Speicher ist ja auch nur eindimensional und daher gibt es so etwas, wie 2 dimensionale Arrays nicht wirklich).
Erstellen kannst du die so:int a[2][2]; // wird auf das gleiche abgebildet, wie: const unsigned int width = 2; const unsigned int height = 2; int b[width*height];Wenn du dir jetzt vorstellst, wie du ein 2 dimensionales Array mit nur einem eindimensionalem handhaben würdest, dann hättest du so etwas, wie das hier:
void out (unsigned int x, unsigned int y ) { std::cout << b[y*width+x]; }Und so etwas passiert auch, wenn du das mit a[][] machst.
-
Also wäre ja
array[3][1] das selbe wie array[1][3]
?
Sorry bin gerade etwas langsam
-
Prinzipiell ja.
-
Das erste sind 3 Tüten mit jeweils einem Apfel, das zweite ist eine Tüte mit drei Äpfeln.
-
SeppJ schrieb:
Das erste sind 3 Tüten mit jeweils einem Apfel, das zweite ist eine Tüte mit drei Äpfeln.
Genau das ist mir auch durch den Kopf (warst das demfall du letztens mit dem Apfel Beispiel?), hab das Beispiel dann aber gelassen.

-
drakon schrieb:
warst das demfall du letztens mit dem Apfel Beispiel?
Nee, aber ich werde diese schöne Metapher einfach nicht mehr los, nachdem ich sie neulich gelesen habe.
-
SeppJ schrieb:
drakon schrieb:
warst das demfall du letztens mit dem Apfel Beispiel?
Nee, aber ich werde diese schöne Metapher einfach nicht mehr los, nachdem ich sie neulich gelesen habe.
- Geht mir genau gleich. Vor allem hats dort so richtig gut gepasst und (wahrscheinlich nicht böse gemeint) den Fragesteller so richtig Kleinkindlich aussehen lassen. (Hat denke ich falsch zusammengezählt oder so)@Icematix
Um der nächsten Frage gleich entgegen zu kommen. Die Übergabe an Funktionen:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-212469-and-highlight-is-array+2+dimensionales.htmlDa siehst du dann, dass ich da genau das obige gebraucht habe, um den Zugriff auf ein 2 Dimensionales Array zu haben, auch wenn ich nur ein "eindimensionales" habe.