Вопрос: Как мне равноправно использовать статически и динамически задаваемые многомерные массивы при передаче их в качестве параметров функциям? Ответ: Идеального решения не существует. Возьмем объявления
соответствующие способам выделения памяти в вопросах 2.10 Автор: Кодт и 2.14Дата: 20.01.03 Автор: Кодт , и функции, объявленные какДата: 20.01.03
(см. вопросы 2.10 Автор: Кодт и 2.11Дата: 20.01.03 Автор: Кодт ). Тогда следующие вызовы должны работать так, как ожидаетсяДата: 20.01.03
Следующие два вызова, возможно, будут работать, но они включают сомнительные приведения типов, и работают лишь в том случае, когда динамически задаваемое число столбцов ncolumns совпадает с NCOLUMS:
Необходимо еще раз отметить, что передача &array[0][0] функции f2 не совсем соответствует стандарту; см. вопрос 2.11 Автор: Кодт .Дата: 20.01.03 Если Вы способны понять, почему все вышеперечисленные вызовы работают и написаны именно так, а не иначе, и если Вы понимаете, почему сочетания, не попавшие в список, работать не будут, то у Вас очень хорошее понимание массивов и указателей (и нескольких других областей) C. |