Управлять многомерным массивом в функции

Я прочитал много вещей здесь и перепробовал много, но я не смог найти способ передать многомерный массив в функцию в C, изменить некоторые значения и каким-то образом вернуть новый массив. Важно найти способ передать этот массив другой функции и сделать то же самое.

Я хотел бы найти способ передачи массива в функцию. Затем передайте его из первой функции во вторую, сделайте что-нибудь там (возможно, напечатайте, возможно, измените значения), затем снова используйте его для первой функции и, наконец, используйте этот массив в основном.

Моя последняя попытка:

void func(int multarray[][columns]){
    multarray[0][0]=9;
}

int main(){
    int rows;
    int columns;
    int multarray[rows][columns];
    func(multarray);
    return 0;
}

Я также попробовал это:

void func(int multarray[rows][columns]){
    multarray[0][0]=9;
}

int main(){
    int rows;
    int columns;
    int multarray[rows][columns];
    func(multarray);
    return 0;
}

Я также попробовал это:

int
getid(int row, int x, int y) {
          return (row*x+y);
}

void
printMatrix(int*arr, int row, int col) {
     for(int x = 0; x < row ; x++) {
             printf("\n");
             for (int y = 0; y <col ; y++) {
                 printf("%d  ",arr[getid(row, x,y)]);
             }
     }
}

main()
{

    int arr[2][2] = {11,12,21,22};
    int row = 2, col = 2;

    printMatrix((int*)arr, row, col);

}

изВот

Я также пробовал двойные указатели. Я также читал, что есть другой подход, если компилятор не поддерживает VLA. Я использую GNU.

Ответы на вопрос(4)

Ваш ответ на вопрос