C - Mehrdimensionales Array als Rückgabewert

Hatte ich auch gedacht, kommt aber quatsch raus:
Stimmt natürlich, da hab ich wohl nicht mitgedacht. Bei dem Aufruf werden die Elemente von B ja überschrieben, obwohl man zur Berechnung die alten Werten brauchen würde.

Es wäre schön wenn die ersten beiden Argumente von MMult nicht als Referenz angenommen werden, sondern neu angelegt werden (call-by-value).
Wieso wäre das schön? Ich würde einfach eine temporäre Matrix anlegen und diese nach der Mutliplikation rüberkopieren:
C++:
void MMult(int A[][3], int B[][3], int C[][3])
{
	int sum;
	int C_[][3] = {{0,0,0},{0,0,0},{0,0,0}};

	// Zeilen
	for (short i = 0; i <= 2; i++)
	{
		// Spalten
		for (short j = 0; j <= 2; j++)
		{
			sum = 0;
			for (short k = 0; k <= 2; k++)
			{
				sum += A[i][k] * B[k][j];
			}
			C_[i][j] = sum;
		}
	}

	for (short i = 0; i <= 2; ++i) {
		for (short j = 0; j <= 2; ++j) {
			C[i][j] = C_[i][j];
		}
	}
}
Grüße, Matthias
 
Zurück