Как правило, предпочтительный способ для функции получать двумерные массивы с измерениями, неизвестными во время компиляции, - передавать размеры и использовать их для определения массива:
void 2d_field(size_t Rows, size_t Columns, char field[Rows][Columns])
Если вы должны поддерживать C реализация, которая не поддерживает массивы переменной длины, тогда альтернативой является передача указателя на первый элемент массива:
void 2d_field(size_t Rows, size_t Columns, char *field)
, а затем использование ручных вычислений для ссылки на элементы массива. Элемент в строке r
и столбце c
равен field[r*Columns+c]
.