Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?

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

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!

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

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.


  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


Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.