Итак, есть матрица
float matrix[N][M] = {...};
есть функция, в которую передается указатель на матрицу и её размерности в виде параметров
void foo(float *matrix_ptr, int n, int m);
Вопрос простой: каким образом можно внутри функции обратиться к данным массива в виде
temp = matrix_ptr[i][j];
средствами чистого си?
Единственный вариант, который видится - вычислять смещения вручную. Либо жестко задавать размерность в параметрах функции.
Может, есть какое-нибудь волшебное заклинание, приводящее произвольный указатель к массиву нужной размерности?