2-Dimensionales Array an Funktion übergeben
-
Wie übergibt man einer Funktion ein 2-Dimensionales char-Array?
Die Frage gabs zwar schon, bin aber nicht schlau geworden draus.Also hier mal der Beispiel-Code:
void fa(char **arr); int main() { char arr1[10][10]; fa(arr1); return 0; } void fa(char **arr) { int i; for(i = 0; i < 10; i++) printf("%d ", arr[i][0]); }
-
Na wenn deine Funktion einen Vektor von Zeigern erwartet musst du ihr auch einen Vektor von Zeigern übergeben, in deinem Fall Zeiger auf char, wüsste nicht was das mit der Dimension eines Zeigers zu tun hat.
-
ähm ich wollte sagen mit der Dimension eines Vektors....
-
Merkregel: Ein Array vom Typ T kann, unabhängig von der Anzahl der Dimensionen, nur in T* umgewandelt werden.
Das ist ganz einfach weil wenn man es in T** umwandeln könnte, würde das bedeuten t[0] wäre ein T*, und das ist bei mehrdimensionalen Arrays nicht der Fall.
Btw steht das alles in den FAQ.
Gruß
-
hmm...oje...ich checks nicht
Wie müsste das denn im Code aussehen?Hab schon rumprobiert, aber immer noch einen Speicherzugriffsfehler bei der
Ausführung.Thx
-
So sollte's klappen:
void fa(char **arr); int main() { char arr1[3][8]; //Man sollte das Array sinnvollerweise füllen. fa(arr1); return 0; } void fa(char **arr) { int i,j; for(i = 0; i < 3; ++i) for (j = 0; j < 8; ++j) printf("%c ", arr[i][j]); };
-
öhm...und was ist da an meinem Code so viel anders?
Es ist gefüllt, habs halt weggelassen.
Thx
-
PS: Wo steht das in der FAQ?
-
#define N 8 void fa(char (*arr)[N]) { ... }; int main() { char arr[3][N]; fa(arr); return 0; };
-
Alles klar, jetzt gehts!
Thx