Array Verständnissproblem

Crackmaster

Mitglied
Hey,

also ich habe jetzt Folgendes gemacht :

Code:
unsigned long * x = new unsigned long [ y, z ];

kann mir Jemad erklären was da nun genau passiert der Compiler gibt keinen Fehler aus aber ich komme wegen dem Komma ins Stutzen,
ist das Array dann 2 dimensonal ?

Wenn ja, wie greife ich dann auf die Daten zu, etwa mit:

Code:
x [ y, z ] = a;

und was ist dann mit :

Code:
unsigned long * x = new unsigned long [ y ] [ z ];

Ich würde mich freuen wenn mir das Jemand erleutern kann
 
Zuletzt bearbeitet:
Hi.
Hey,

also ich habe jetzt Folgendes gemacht :

Code:
unsigned long * x = new unsigned long [ y, z ];

kann mir Jemad erklären was da nun genau passiert der Compiler gibt keinen Fehler aus aber ich komme wegen dem Komma ins Stutzen,
ist das Array dann 2 dimensonal ?
Nein.

Das Komma ist der Sequenzoperator. Die Anweisungen werden alle nacheinander ausgeführt, aber nur das Ergebnis der letzten Anweisung wird als Ergebnis der gesamten Sequenz zurückgeben. In dem Fall hat das Array die Dimension z.
und was ist dann mit :

Code:
unsigned long * x = new unsigned long [ y ] [ z ];
Das sollte einen Compilerfehler zur Folge haben.

Ein zwei-dimensionales Array kannst du folgendermaßen anlegen:
C++:
unsigned long** x = new unsigned long*[20];
for(int i = 0; i < 20; ++i) {
  x[i] = new unsigned long[40];
}

x[2][3] = 34ul;
Die Arrays mußt du denn in umgekehrter Reihenfolge mit delete[] wieder freigeben.

Alternativ könntest du auch das Array im Ganzen allozieren und dann den Index berechnen.

Gruß
 
Hi Crackmaster,

wenn es dir nicht weiterhilft dann stelle einfach weitere Fragen zu dem Thema. Sollte alles klar sein dann bitte den thread als "erledigt" markieren.

PS. Das mit dem Sequenzoperator habe ich in Delphi z.B. so in Erinnerung das man sich aussuchen konnte ob man x[1,2] bzw. x[1][2] schreiben kann bei einem 2dimensionalen Array. Wahrscheinlich eine Komfortimplementation :)

mfg
 
Zurück