Zweidimensionales Array als Parameter mit Struktur initialisieren
-
Hey zusammen!
Ich möchte ein in main() erstelltes 2-dimensionales Array an eine Funktion übergeben und mit Strukturzeigern füllen.
Mein Code sieht bis jetzt so aus:struct Cube { int val; } void createField(Cube** field, int w, int h) { for (int x = 0; x < w; x++) { for (int y = 0; y < h; y++) { field[x][y] = new Cube; field[x][y].val = 0; } } } int main() { Cube* f[10][10]; createField(f, 10, 10); return 0; }
-
struct Cube { int val; }; // Semikolon! const unsigned width=10; void createField(Cube* field[][width], unsigned h) // Tipp: Benutze keine 2D-arrays. Die sind unnötig kompliziert zu verwenden. { for (unsigned x = 0; x < h; x++) // Da Indizes nie negativ sind, können wir auch gleich einen vorzeichenlosen Typ nehmen { for (unsigned y = 0; y < width; y++) { field[x][y] = new Cube; field[x][y]->val = 0; // field[x][y] ist ein Zeiger auf Cube und muss daher dereferenziert werden. } } } int main() { Cube* f[10][width]; // Wie schon gesagt: Nimm lieber 1-D Arrays oder eine Multi-Array Klasse createField(f, 10); return 0; }
-
Ok, danke!
Jetzt hab ich noch ein Problem und zwar will ich ein Array von unbekannter Größe in einer Struktur speichern.
Wie mach ich das!
-
Du speicherst einen Zeiger auf ein mit new angelegtes Array.
-
AxXxel001, gewöhn dir am besten gleich an, mit
newangeforderten Speicher immer wieder mitdeletefreizugeben (analognew[]unddelete[]). Oder verwende Klassen, welche dir diese Aufgabe abnehmen (z.B. STL-Container).