double **a;
// Выделили память
a = (double **)malloc(N*sizeof(double *));
for (int i = 0; i < N; i++) a[i] = (double *)malloc(M*sizeof(double));
// Заполнили массив какими-нибудь значениями
...
// Работаем с ним
WorkWithArray(a);
void WorkWithArray(double **a) {
fprintf(h, "%lf", a[1][2]);
}
Вопрос: откуда компилятор знает где брать a[1][2], ведь массив выделен динамически? Неужели он рюхает что в массиве N столбцов?
double **a;
fprintf(h, "%lf", aa[1][2]);
Почему вообще компилируется такой код? К какому элементу будет идти обращение, если размер строки нигде не определен?
После всех этих вопросов понял что я совсем дурак и полез в КР.
Там пишут:
Если двумерный массив передается функции в качестве аргумента, то объявление соответствующего ему параметра должно содержать количество столбцов ... в качестве примера дают
f(int daytab[][13]) { ... }
Иттить, а как же тогда работает WorkWithArray(double **a) ?