vorbei statisch zugeordneten 2D-arrays als Funktionsparameter in C

Betrachten Sie diesen code:


#include <stdio.h>
#define N 5
void printMatrix(int (*matrix)[N],int n)
{
   int i,j;
   for(i=0;i<n;i++){
      for(j=0;j<n;j++)
        printf("%d",matrix[i][j]);
     printf("\n");
   }
}
int main()
{
   int R[N][N]={{1,2,3},{4,5,6},{7,8,9}};
   printMatrix(R,3);
}

Dies funktioniert gut, wie erwartet.

Nun, ich dachte zu schreiben, die Funktionen Umgang mit 2D-Matrizen in einer separaten Quelldatei, und verknüpfen Sie Sie wo immer Sie benötigt werden.

Dann aber lief ich in ein problem, wie in der Funktion printMatrix die Größe des Arrays von int auf die matrix Punkte (ich.e N) ist erforderlich zur compile-Zeit. So, meine Funktionen nicht funktionieren würde, in anderen Fällen, wenn die Größe unterschiedlich ist.

So,Wie kann ich das umgehen?

Dynamische Arrays sind eine Lösung, aber ich möchte wissen, ob es kann getan werden, mit statischen arrays.

InformationsquelleAutor sud03r | 2010-02-16
Schreibe einen Kommentar