2D-Array an Funktion übergeben



  • Hallo, könnt ihr mir sagen wie ich ein 2d-Array an eine Funktion übergebe, wenn ich noch nicht weiss wie groß das 2d-Array ist?

    Will ich z.B. ein 5*5 Array übergeben, dann funktioniert es ja so:

    void TESTFUNKTION(int 2darray[5][5])
    

    Wie übergebe ich aber ein 2d-Array, von dem ich die größe noch nicht weiss?

    Wenn ich es so versuche:

    void TESTFUNKTION(int 2darray[][])
    

    Sagt mir der compiler "incomplete element type"

    Ich möchte nämlich eine Fkt. schreiben, die mir jedes beliebiges 2d-Array ausgibt.

    grazie



  • Scheint ja momentan ein inflationäres Thema zu sein.

    Nutze dazu void* und Zeiger auf VLA und übergib die dynamischen Ebenengrößen als extra Parameter, also in etwa:

    void f(void *a,int x,int y)
    {
    	int (*b)[y] = a;
    	for(int n=0;n<x;++n,puts(""))for(int m=0;m<y;++m)printf("%d",b[n][m]);
    }
    
    int main(void) {
    	int x,y;
    	x = 2;
    	y = 3;
    	f((int[][3]){
    		         {1,2,3},
    				 {9,8,7}
    				},
    				x,y);
    	return 0;
    }
    

    http://ideone.com/Ngo90f


Anmelden zum Antworten