kale_1990 Geschrieben 12. April 2007 Geschrieben 12. April 2007 hallo, jetz hab ich noch ein problem und zwar: ich definiere mir ein 2d-array am anfang des programms folgendermaßen: int chain_pos[1][2]; das heißt es gibt chain_pos[0][0] und chain_pos[0][1] soweit, sogut... nun möchte ich im programm das array verlängern.... wenn sich also (int) mampf_pos um eines erhöht soll es ein weiteres feld geben...als wenn jetz mampf_pos um eins erhöht wird, soll es chain_pos[1][0] und chain_pos[1][1] geben und wenn mampf_pos wieder eines mehr ist chain_pos[2][0] und chain_pos[2][1] wie mach ich das? Zitieren
Klotzkopp Geschrieben 12. April 2007 Geschrieben 12. April 2007 C oder C++? Ich würde das gar nicht als zweidimensionales Array machen, sondern als eindimensionales Array einer Struktur mit zwei int-Membern. Denn so wie es aussieht, ändert sich die Größe der zweiten Dimension ja nicht. Ein eindimensionales Array kannst du, wie es mit dynamischen Arrays üblich ist, vergrößern (realloc in C, new und umkopieren in C++ - oder besser gleich std::vector). Zitieren
kale_1990 Geschrieben 13. April 2007 Autor Geschrieben 13. April 2007 in C. stimmt die zweite dimension endert sich nicht! ok dann mach ich es mit einer struktur und einem eindimensionalen array.... danke für die antwort! und das vergrößern mit realloc war mir schon klar aber das ich blos die 1.dim. vergrößern wollt war der auslöser des problem...aber danke! Zitieren
kale_1990 Geschrieben 13. April 2007 Autor Geschrieben 13. April 2007 hallo, jetz bin ichs nochmal...wie soll ich das jetzt genau machn.... ich hab jetz meine struktur struct typ_sch { int x; int y; } chain_pos[1]; nun füll ich das erste array-struktur-feld: chain_pos[mampf_zaehler].x = mampf_pos[0]; chain_pos[mampf_zaehler].x = mampf_pos[1]; nun muss ich mit realloc chain_pos um eines vergrößern jetz hab ich chain_pos = (int *)realloc(chain_pos,(mampf_zaehler+1)); wenn ich es so mache bekomme ich immer den compiler-fehler: left operand must be modifiable lvalue: op "=" an was liegt das, oder wie mach es richtig(wie du es meintest)? Zitieren
Guybrush Threepwood Geschrieben 13. April 2007 Geschrieben 13. April 2007 Du kannst ein festes Array nicht vergrößern oder verkleinern. Wenn du die Größe zur Laufzeit ändern willst musst du dir auch zur Laufzeit Speicher reservieren (in C mit malloc oder calloc) und einem entsprechenden Zeiger darauf verweisen lassen. Diesen kannst du dann nach belieben vergrößern. Zitieren
kale_1990 Geschrieben 13. April 2007 Autor Geschrieben 13. April 2007 struct typ_sch { int x; int y; } chain_pos; chain_pos = malloc(1*sizeof(int)); wenn ich es jetz nun so mache bekomme ich "sn.c", line 88: assignment type mismatch: struct typ_sch {int x, int y} "=" pointer to void "sn.c", line 115: operands have incompatible types: struct typ_sch {int x, int y} "+" int "sn.c", line 115: cannot dereference non-pointer type "sn.c", line 116: operands have incompatible types: struct typ_sch {int x, int y} "+" int "sn.c", line 116: cannot dereference non-pointer type Zitieren
Guybrush Threepwood Geschrieben 13. April 2007 Geschrieben 13. April 2007 Ich glaube das Beste wäre wenn du dir erstmal ein gutes Buch oder Tutorial schnappst und dir das ganze von Anfang an anschaust. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.