Manipolare la matrice multidimensionale in una funzione

Ho letto un sacco di cose qui e ho provato molte ma non sono riuscito a trovare un modo per passare una matrice multidimensionale a una funzione in C, modificare alcuni valori e in qualche modo restituire il nuovo array. È importante trovare un modo per passare quell’array ad un’altra funzione e fare la stessa cosa.

Mi piacerebbe trovare un modo per passare l’array a una funzione. Quindi passare dalla prima funzione a una seconda, fare qualcosa lì (magari stampare, magari cambiare i valori), quindi usarlo di nuovo alla prima funzione e infine usare quella matrice in main.

Il mio ultimo tentativo è:

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

Ho anche provato questo:

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

Ho anche provato questo:

 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); } 

da qui

Ho anche provato i doppi puntatori. Ho anche letto che c’è un approccio diverso se il compilatore non supporta VLA. Sto usando gnu.