СИ, функции и двухмерные массивы
Я создал 2 функции по заполнению и выводу массива, но что то не работает, подскажите в чем проблема, я просто новичок в СИ
#include <stdio.h>
void create_mas(int **array,int i,int j) {
int b = 0;
for (int k = 0; k < i; ++k) {
for (int l = 0; l < j; ++l) {
b++;
array[k][l] = b;
}
}
return 0;
}
void show_array(int **array, int i, int j) {
for (int k = 0; k < i; k++) {
for (int l = 0; l < j; l++) {
printf("%d", k);
printf("%d\t", array[k][l]);
}
printf("\n");
}
return 0;
}
int mas[4][4];
int main() {
create_mas(mas,4, 4);
show_array(mas,4,4);
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Надо либо использовать динамический двумерный массив, что-то типа следующего кода для массива NxM:
int** a = (int **) calloc(N, sizeof(int *));
for (int i = 0; i < N; i++) a[i] = (int *) calloc(M, sizeof(int));
и тогда можно передавать его в функцию func(int**). Потом только надо не забыть освободить выделенную память,
for (int i = 0; i < N; i++) free(a[i]);
free(a);
Либо передавать в функцию матрицу
void show_array(int a[][4]);
и тогда ваш код будет работать.
Либо передавать
void show_array(int *a);
и обращаться к элементу a[i][j] как к
*(a+4*i+j)
Смотрите сами, какой из трех вариантов вам удобнее.