Как передать двумерный динамически распределенный массив в функцию?

У меня есть двухмерный массив, динамически выделяемый в моем коде C, в моей функции main. Мне нужно передать этот 2D-массив функции.Поскольку столбцы и строки массива являются переменными времени выполнения, я знаю, что один из способов передать это:

-Передать переменные строк и столбцов и указатель на этот [0] [0] элемент массива

myfunc(&arr[0][0],rows,cols)

] затем в вызываемой функции обращайтесь к нему как к «сплющенному» 1D-массиву, например:

ptr[i*cols+j]

Но я не хочу делать это таким образом, потому что это означало бы много изменений в коде, поскольку ранее 2D Переданный в эту функцию массив был статически размещен с известными во время компиляции размерами.

Итак, как я могу передать 2D-массив функции и по-прежнему иметь возможность использовать его как 2D-массив с двумя индексами, как показано ниже?

arr[i][j].

Любая помощь будет принята с благодарностью.

6
задан Columbia says Reinstate Monica 9 December 2016 в 17:26
поделиться