Массивы указателей с неопределенным размером
От: unz0r  
Дата: 07.11.07 22:09
Оценка: :)
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) ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.