-nPrCrZ Geschrieben 8. Mai 2003 Geschrieben 8. Mai 2003 Hi, können zweidimensionale Arrays dynamisch erzeugt werden? Habs schon so versucht: bool * test = new bool [3] [2]; test[1][1] = true; delete [] test; Bekomme aber einen Fehler beim compilieren. mfg Chris
Guybrush Threepwood Geschrieben 8. Mai 2003 Geschrieben 8. Mai 2003 Die Boardsuche hätte unter anderem diesen Thread zum Vorschein gebracht;) Gruß Guybrush
Diablo999 Geschrieben 8. Mai 2003 Geschrieben 8. Mai 2003 Hi Chris... Leider ist es meines Wissens nach nicht möglich dynamische mehrdimensionale Arrays in C++ zu erzeugen, das liegt daran das du den zeiger den dir new zurückgibt einer Variable vom Typ bool* zuweist. Um auf einen Pointer zuzugreifen gibt es die Möglichkeiten *Var und Var[x] . Da der C Compiler aber nicht "weiß" das dein Zeiger auf ein mehrdimensionales Array zeigt kannst du nicht darauf zugreifen wie bei mehrdimensionalen statischen Arrays. Um dies zu können müsste der Compiler der Obergrenze der zweiten Dimension kennen um das richtige Feld zu ermitteln. Jedoch weißt du ja die Dimesionen und kannst dir einen Workaround basteln. z.B. bool* x = (bool*)new bool[3][4]; // Poiner auf des 2-dimensionale Array erzeugen // Zugriff auf x[2][3] x[2*4 + 3] = 1; // 2*4 ergibt dabei den offset auf die 1. Dimension // 3 gibt das offset in der 2. Dimension an Hoffe das ist verständlich.... Diablo999
Guybrush Threepwood Geschrieben 8. Mai 2003 Geschrieben 8. Mai 2003 Original geschrieben von Diablo999 Hi Chris... Leider ist es meines Wissens nach nicht möglich dynamische mehrdimensionale Arrays in C++ zu erzeugen, ... Doch ist es, siehe oben;) und wenn du es mit new machen willst: char *(*p); (*p) = new char[20]; p[0] = new char[5]; p[1] = new char[10]; p[0][0] = 'r'; strcpy(p[1],"hallo"); usw. [/PHP] PS: nicht vergessen den Speicher wieder freizugeben;) Gruß Guybrush
Diablo999 Geschrieben 8. Mai 2003 Geschrieben 8. Mai 2003 Hi Guybrush... Bei deinem Code hast du aber kein richtiges 2-Dimensionales Array Es ist mehr ein Array von Zeigern die wiederum auf eindimensionale Arrays zeigen. Ein Array ist im Speicher immer zusammenhängend, ansonsten ist es kein Array mehr. Bei deiner Version müssten für die Anzahl der 1. Dimension ein new aufruf geschehen um die 2. Dimension zu allocieren was sich nicht unbedingt positiv auf das laufzeitverhalten auswirken würde. Da ist ein Zugriff über Offsets die effizientere Lösung. Gruß Diablo999
nic_power Geschrieben 8. Mai 2003 Geschrieben 8. Mai 2003 Das hier sollte Dir eigentlich weiter helfen: http://www.cs.uregina.ca/links/class-info/210/Lab7_2DArray/ Nic
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden