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?
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).
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!
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)?
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.
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
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.
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