Я прочитал много вещей здесь и попробовал много, но я не мог найти способ передать многомерный массив функции в 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.