C 2 matrizen tauschen

striker159

Lt. Junior Grade
Registriert
Dez. 2008
Beiträge
332
hallo
ich habe hier ein kleines problem. ich kenne mich leider nicht genug mit c aus.

ich habe zwei 2d matrizen A und B und möchte einfach die werte von B in A haben. habe ich mir gedacht, tausche ich einfach die pointer. das funktioniert aber nicht. momentan mache ich das einfach (langsam) über 2 for schleifen.


Code:
int block = 4;

float A[block+2][block+2];
float B[block+2][block+2];
...
...
float temp[block+2][block+2] = A;
A = B;
B = temp;
;

für jede der 3 unteren zeilen gibt es dann einen compile error:
error: variable-sized object may not be initialized

error: incompatible types when assigning to type ‘float[(sizetype)(block + 2)][(sizetype)(block + 2)]’ from type ‘float (*)[(sizetype)(block + 2)]’

error: incompatible types when assigning to type ‘float[(sizetype)(block + 2)][(sizetype)(block + 2)]’ from type ‘float (*)[(sizetype)(block + 2)]’


kann mir jemand sagen, warum es so nicht funktioniert?
 
Zuletzt bearbeitet:
Die Zuweisung in Zeile 7 funktioniert so leider nicht, weil A ein Pointer ist und temp in diesem Fall nur mit Werten initialisiert werden kann. Wenn du reines C verwenden willst (und kein C++), dann nimm am besten memcpy, um den Inhalt des Arrays zu kopieren (den Code habe ich nicht getestet):

Code:
float temp[block+2][block+2];

memcpy(temp, A,    sizeof(temp) / sizeof(temp[0]));
memcpy(A,    B,    sizeof(A)    / sizeof(A[0]));
memcpy(B,    temp, sizeof(B)    / sizeof(B[0]));
 
spiel mit den Funktionen der C-Standard-Library etwas rum:

#include <string.h>

memcpy oder memmove

memcpy(ArrayZiel, ArrayQuelle, sizeof(ArrayQuelle));
 
Zurück
Oben