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.