Wie wird ein einfacher Zeiger auf ein mehrdimensionales Array fester Größe umgewandelt?

Ich habe eine Funktion, die einen Zeiger auf ein Gleitkomma-Array nimmt. Aufgrund anderer Bedingungen weiß ich, dass der Zeiger tatsächlich auf eine 2x2- ODER 3x3-Matrix zeigt. (Tatsächlich wurde der Speicher ursprünglich als solcher zugewiesen, z. B. float M [2] [2].) Wichtig ist, dass ich diese Bestimmung im Funktionskörper und nicht als Funktionsargument vornehmen möchte.

void calcMatrix( int face, float * matrixReturnAsArray )
{
    // Here, I would much rather work in natural matrix notation
    if( is2x2 )
    {
        // ### cast matrixReturnAsArray to somethingAsMatrix[2][2]
        somethingAsMatrix[0][1] = 2.002;
        // etc..
    }
    else if(is3x3)
    { //etc...
    }

}

Mir ist bewusst, dass ich Vorlagen und andere Techniken verwenden könnte, um dieses Problem besser anzugehen. Meine Frage ist wirklich, wie man eine solche Besetzung beim ### Kommentar macht. Arbeiten in C ++.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage