2dimensonales Array aus Funktion zurückgeben
-
Hallo, ist es möglich ein zweidimensionales array aus einer Funktion zurückzugeben?
Ich dachte dabei an so etwas:
array[3][3] function (int x, int y)
ich habe das probiert, es hat aber leider nicht funktioniert.
geht so etwas wenn nicht, wie kann man dies dann machen?
Ein eindimensionales Array kann man als Referenz übertragen. Wie macht man das aber mit einem zweidimensionalen Array?
-
z.B. so:
int **createMatrix(size_t rows, size_t cols) { int **arr = 0; arr = new malloc(sizeof(*int)*rows); for (size_t i=0;i<rows;++i) *(arr+i) = malloc(sizeof(int)*cols); return arr; };
Ich zeige dir das bewusst mit malloc, weil ich noch anmerken möchte, dass ein arr[2][3], welches du in deiner Funktion erstellst, beim Verlassen der Funktion zerstört wird und der Pointer dann ins Nirvana zeigt. So musst du das 2D-Array halt wieder löschen, wenn du es nicht mehr brauchst.
MfG
GPC
-
als struct geht's auch
struct matrix { int array[3][3]; }; struct matrix funktion (int x, int y) { struct matrix m; ... ... return m; }
-
hat wunderbar funktioniert
ich habe es noch nicht ausprobiert, halte aber das für eine sehr gure Idee!!
sehr viele Dank euch beiden!!!!