2 Dimensionaler Vektor als Parameter übergeben



  • Hallo an alle,

    mein Problem ist folgendes:

    ich möchte aus der main funktion eine prüf(funktion) aufrufen und dabei einen
    2-Dimensionalen Vektor übergeben um dann in der prüf(funktion) damit weiter arbeiten!

    ich habe es schon so versucht:

    int prüf(int matr[][]){} <-- das funktioniert nicht
    int prüf(int matr[4][4]){} <-- das auch nicht

    bzw.

    prüf(matr[][]);
    prüf([4][4])

    hier einen ausschnitt aus meinem quellcode:

    int pruef(int matr[][]);
    
    int main(){
    int matr[4][4]={1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4};
    
    pruef(matr[][]);
    
    }
    
    int pruef(int matr[][]){
    
    // mit 2-dim. Vektor weiter arbeiten "alle felder wieder ansprechen können"
    }
    

    kann mir bitte einer helfen??



  • Ne, das ist noch ein Fehler, mom...
    Na so ein Mist, das Thema hatten wir hier schon und ich finde meine Lösung hier nicht mehr wieder..naja..vielleicht wurde das schon gelöscht... da hatte ich das irendwie anders gemacht...naja...

    int pruef_matrix_version1( int* a )
    {
    	int i, j;
    
    	for ( i = 0; i < 4; i++ )
    	{	
    		for ( j = 0; j < 4; j++ )
    		{
    			printf("matr[%d%d] = %d\n", i, j, *( &a[j] + i*sizeof(int) ) );
    		}
    		puts("");
    	}
    
    	return 0;
    }
    
    // Vielleicht etwas nachvollziehbarer, aber alle 16 Elemente werden extra kopiert.
    int pruef_matrix_version2( int* a )
    {
    	int i, j;
    	int matrix_kopie[4][4];
    
    	for ( i = 0; i < 4; i++ )
    	{	
    		for ( j = 0; j < 4; j++ )
    		{
    			matrix_kopie[i][j] = *( &a[j] + i*sizeof(int) ) ;
    			printf("matr[%d%d] = %d\n", i, j, matrix_kopie[i][j]  );
    		}
    		puts("");
    	}
    
    	return 0;
    }
    
    int main()
    {
    	int i, j;
    
    	int matr[4][4] =
    	{
    			{  1,   2,  3,  4 },
    			{  5,   6,  7,  8 },
    			{  9,  10, 11, 12 },
    			{ 13,  14, 15, 16 },
    	};
    
    	pruef_matrix_version1( matr[0] );
    	puts("*****************************\n");
    	pruef_matrix_version2( matr[0] );
    
    	// mit 2-dim. Vektor weiter arbeiten "alle felder wieder ansprechen können"
    	// "Hallo Feld_1, wie gehts denn heute", "hallo Feld_2 soll dich von Feld_1 grüßen".
    
    }
    


  • probier:

    //Funktionskopf
    int pruef(int matr[4][4])
    
    //Funktionsaufruf
    pruef(matr);
    


  • @kuldren Danke dir hat super geklappt. Es fehlte nur die Vektorgröße im Funktionskopf und Funktion selbst 🙂


Anmelden zum Antworten