Como converter um ponteiro simples em um array multidimensional de tamanho fixo?

Eu tenho uma função que leva um ponteiro para uma matriz de ponto flutuante. Com base em outras condições, sei que o ponteiro está apontando para uma matriz 2x2 ou 3x3. (na verdade, a memória foi inicialmente alocada como tal, por exemplo, float M [2] [2]) O importante é que eu queira fazer essa determinação no corpo da função, não como o argumento da função.

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...
    }

}

Estou ciente de que poderia usar modelos e outras técnicas para resolver melhor esse problema. Minha pergunta é realmente sobre como fazer tal elenco no comentário ###. Trabalhando em C ++.

questionAnswers(3)

yourAnswerToTheQuestion