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
-
http://www-info2.informatik.uni-wuerzburg.de/dclc-faq/kap2.html#2.10
(Am besten den Rest auch noch lesen.)
-
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.