arrElemente[4][4]: Wie als Parameter übergeben?



  • Wie übergebe ich ein zweidimensionales Array als Parameter an eine Funktion?

    void matrixmult(double arrRueckgabe[4][4], double arrWerteA[4][4], double arrWerteB[4][4]) {
    	int i, j;
    
    	for (i = 0; i < 4; i++) {
    		for (j = 0; j < 4; j++) {
    			arrRueckgabe[j][i] = arrWerteA[j][0] * arrWerteB[0][j] +
    							arrWerteA[j][1] * arrWerteB[1][j] +
    							arrWerteA[j][2] * arrWerteB[2][j] + 
    							arrWerteA[j][3] * arrWerteB[3][j];
    		}
    	}
    }
    

    Eine einfache, jedoch sich oft wiederholende, Funktion zur Multiplikation von Matrizen. Sicher soll es std::vector geben, aber das ist nicht der Punkt. Der Punkt ist der, dass ich es nicht hinbekomme die 2er-Arrays zu übergeben. Dabei am liebsten als Referenz (habe hier die * erstmal entfernt). - Was ist also falsch? Und wie muss der Aufruf erfolgen?

    Für jede Hilfe bin ich dankbar.



  • Ich glaube, in solchen Fällen hilft ein eigener Typ mit typedef.



  • void matrixmult(double** arrRueckgabe, double** arrWerteA, double** arrWerteB) //...
    


  • @Shlo: Genau das habe ich auch gemacht. Sind ja auch zwei Dimensionen. Nur wie erfolgt nun der Aufruf?



  • Kein MFC
    Verschoben nach C





  • @rafa

    so sollte es gehen:

    void test(double** ppd) /*Definition*/ {
    	ppd[0][0] = 1; //Testzuweisung
    }
    
    //...
    double** ppd = new double*[4]; //Zweidimensionalen Array auf dem Heap erzeugen
    for (int i = 0; i < 4; i++) ppd[i] = new double[4]; test(ppd); //Funktionaufruf
    for (i = 0; i < 4; i++) delete[] ppd[i]; delete ppd; //Den Array wieder löschen
    

    @Unix-Tom
    Ich glaube dieses Thread würde besser ins C++ Forum passen 🙄



  • Das Thema passt in beide Foren. Nur wenn man den Anhang liest sieht man das rafa C++ programmieren lernen will

    // Habt bitte Geduld und Nachsicht. Als VB6/7-, Pascal- & Delphi-Berufsentwickler studiere ich hier C++.
    // Wundert euch dementsprechend nicht über meine Fragen. : )

    Die Testfunktion von shlo funktioniert in beiden Fällen. Der einzige Unterschied ist, das Testpropgramm in C sollte man hier malloc und free benutzen.


Anmelden zum Antworten