2Dim Array: Funktionsaufruf

Nico1989

Mitglied
Hi !
Ich habe ein Verständniss problem bezüglich Funktionsaufrufen mit mehrdimensionalen Arrays.
Als Beispiel:

eine Matrix 2x2
(1 1)
(1 1)

Ich mach mir eine Funktion die eine Matrix ausgibt rein von der logik ja nicht schwierig. Ich hätte das so gemacht:

Code:
void PrintMat(int Matrix[][], int n, int m)
{
  int i, j;
  for (i=0; i <m; i++)
  {
    for(j=0; j<n; j++)
    {
       printf("%d\t", matrix[i][j]);
    }
    printf("\n");
  }
}

/*nun der aufruf im hauptprogramm der nicht funktioniert*/

int main()
{
  int n, m;
  n = 2;
  m = 2;
  int matrix[n][m] = { {1,1}, {1,1} };
  PrintMat(matrix[n][m], n, m);
}

Ich versteh nicht warum der Aufruf so nicht funktioniert...normale arrays können doch auch ganz einfach nach dem schema array[] als parameter übergeben werden.
Zusätzlich drengt sich mir noch die Frage auf, wenn ich zb. 2 Matrizen Addiere in einer Funktion...wie kann ich dann das Ergebniss der Matrix Addition meiner Funktion als Ergebnis übergeben ?
 
diese Änderung führt bei mir leider nicht zum Erfolg :/

void MatrixPrint(int matrix[][], int n, int m)

für diese Zeile bekomme ich folgenden Fehler: error: type has incomplete element type
(Ubuntu, Gcc)
 
Code:
void PrintMat(int matrix[][2], int n, int m)
{
  ...

oder

Code:
void PrintMat(int *matrix, int n, int m)
{
  int i, j;
  for (i=0; i <m; i++)
  {
    for(j=0; j<n; j++)
    {
       printf("%d\t", matrix[i * m + n]);
    }
    printf("\n");
  }
}
 
Zurück