Остальные Вам правильно написали. Надо указывать размер строки.
Если для Вас это неприемлемо, то есть другие варианты. Например, принимать
float det(float**m, int rows, int cols)
Но тогда передавать надо сложнее.
например:
int rows = ...;
int cols = ...;
float **m;
m = calloc(rows, sizeof(float*));
for (int i=0; i<rows; i++) {
m[i] = calloc(cols, sizeof(float));
}
/* как-то заполняете значения */
float res = det(m, rows, cols);
Однако, такой код нормален для C, но не для С++. В C++ коде я бы поостерегся передавать двумерный массив. Впрочем, как и одномерный массив. Вместо это лучше сделать класс матрица. И все особенности хранения данных решать уже в этом классе. Равно как и метод нахождения определителя.