int a[] ----- int a [] []
-
hallo,
ich glaube bei "int a[] ----- int a [] []" keine Unterschiede ,oder?
d.h. 2-Dimension Array in Speicher anliegen genau wie 1-Dimension Array, oder?z.B. int int a[4] ist so: a[0],a[1],a[2],a[3]
----- int a [2][2] ist so: a[0][0],a[0][1],a[1][0],a[1][1].
wer kann mir genau erklären?
vielen Dank!
-
<hust>
Mehrdimendionale Arrays werden in C++ als ein Stück Speicher (also wie ein 1 dimensionales Array) allokiert.
D.h. ein int x[4][2] ist eigentlich ein Block der Länge 8.MfG
GPC
-
ein array int[4][2] ist zunächst einmal ein array aus 4 elementen, diese elemente sind selbst arrays der größe 2 aus ints. wenn du also weißt, wie ein array aus ints aufgebaut ist, ergibt sich der rest ganz automatisch.
-
GPC schrieb:
<hust>
genau das was du sagst, sagt er doch acuh.
-
Kann man auch sehr schön sehen, wenn man da über einen Zeiger drauf zugreift:
int a[8]; int b[2][4]; int c[2][2][2]; int* pa = a; int* pb = *b; int* pc = **c; for (int i = 0; i < 8 ; ++i) { *pa++ = i; *pb++ = i; *pc++ = i; }
-
dEUs schrieb:
GPC schrieb:
<hust>
genau das was du sagst, sagt er doch acuh.
Hab ich was verpasst? Das <hust> war wegen dem "fragwürdigem" Deutsch 
Außerdem wollte er ne Bestätigung haben, die hat er ja gekriegt.MfG
GPC
-
ok, dann hab ich das falsch verstanden. Ich dachte es bezieht sich auf den Inhalt, nicht auf die Form

-
ja, dEUs, war ich nicht sicher, vielen dank GPC...
vielen Dank Joe_M. warum habe ich diese tolle Idee nicht gefunden? Das ist Unterschiede zwischen Profil und Fans

int a[8]; int b[2][4]; int* pa = a; int* pb = *b; for (int i = 0; i < 8 ; ++i) { *pa++ = i; *pb++ = i; } for (int i = 0; i < 8 ; ++i) cout<<pa++<<' '; cout<<endl; // 0012FF64 0012FF68 0012FF6C 0012FF70 0012FF74 0012FF78 0012FF7C 0012FF80 for (int i = 0; i < 2 ; ++i) for (int j = 0; j< 4 ; ++j) cout<<"b["<<i<<"]["<<j<<"] = "<<b[i][j]<<'\n'; /* b[0][0] = 0 b[0][1] = 1 b[0][2] = 2 b[0][3] = 3 b[1][0] = 4 b[1][1] = 5 b[1][2] = 6 b[1][3] = 7 */ cout<<endl; for (int i = 0; i < 8 ; ++i) cout<<pb++<<' '; cout<<endl; // 0012FF3C 0012FF40 0012FF44 0012FF48 0012FF4C 0012FF50 0012FF54 0012FF58ja, richtig! (scheisse!) GPC hat recht!!!
aber d.h.wenn ich eine Datenstruktur auswähle, das ist Egal, a[] oder a[][] auswählen, die Zeitkosten ist gleich, oder?
z.B. a[n*n] oder a[n][n] scheiss egal, oder?

-
Die Entscheidung, was du nimmst, triffst du anhand der Daten die du darin speichern willst. Willst du zweidimensionale Daten speichern, wirst du natürlich logischerweise ein 2-dimensionales Array erstellen.
-
ich habe eine Algorithmus gelesen, wenn man 1-dimensionale Datenstruktur statt 2-dimensionale auswählt,(a[n*n] statt a[n][n]) dann kann die Zeitkosten sparen, damals hatte ich mich erinnert, in C bei 1- oder 2-dimensionale ist egal, so habe ich meine Frage gestellt.

jetzt, wie kann ich diese Algorithmus verstehen?

vielen Dank
-
Welchen Algorithmus?
Und ganz generell: Kannst Du bitte vor dem abschicken Dein Posting einfach nochmal durchlesen? Da ist kein einziger grader Satz drin. Daher ist es ziemlich schwierig zu verstehen, was Du genau wissen möchtest.
-
Wenn es dir auf englisch leichter fällt ist das auch kein Problem. Und wenn wir dich dann verstehen, wäre das sogar besser
