Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Лаба по информатике.. . =(

ice Ученик (145), закрыт 10 лет назад
Почему в программе
на Паскаль при объявлении двумерного массива необходимо, чтобы был известен
размер по каждому измерению массива?

Можно ли
выполнить прямое присваивание двумерных массивов?

Когда, с какой
целью и почему возможно объявление безразмерных массивов? С одним безразмерным
измерением?

В чем отличие
обращения к элементам двумерного массива с помощью индексированного имени и
посредством арифметики с указателями?

Какие
ограничения распространяются на тип массива?

Каким образом
можно определить объем памяти, выделяемой под двумерный массив?
Лучший ответ
Алексей Кузьминов Мудрец (11132) 10 лет назад
Конкретные реализации языка Pascal (Turbo Pascal, Delphi, GNU Pascal, FreePascal) с массивами поступают по-разному. Turbo Pascal, например, вообще не имеет динамических массивов.

Для начала, любой многомерный массив - одномерен, так как занимает в памяти непрерывный кусок, разбитый на одинаковые элементы.

при объявлении двумерного массива необходимо, чтобы был известен размер по каждому измерению массива:
Обычно для ЛЮБОГО массива (в том числе и динамического) перед его использованием известен (точнее, устанавливается) размер. При декларации обычного массива эту работу делает компилятор, а не вы.

выполнить прямое присваивание двумерных массивов?
Что вы хотите, просто две ссылки на один массив или полностью скопировать данные на новую область памяти? Обычный и динамический массив ведут себя по-разному.

с какой целью и почему возможно объявление безразмерных массивов?
Чтобы:
1. область памяти массива была не в области данных программы, а в куче
2. размер отводимой области можно было устанавливать и менять при работе программы, а не при компиляции.
Эти преимущества достигаются за счет многократного копирования при изменении размера и скрытым вызовом процедур для многих операций (например для определения размера)
Одно или много размерностей - это конкретная реализация. Никто не мешает задекларировать массив указателей на массивы как статически, так и динамически.

В чем отличие обращения к элементам двумерного массива с помощью индексированного имени и посредством арифметики с указателями
При индексированном обращении за превращение конкретного адреса в одномерный индекс отвечает компилятор, при арифметике с указателями - вы. Использовать арифметику указателей, не рекомендую, так как она очень редко приводит к значительному ускорению работы, но знать о ней надо.

Какие ограничения распространяются на тип массива?
Тип индекса (ов) должен быть перечислимым. Тип данных - любой. Для старых компиляторов существует ограничение на суммарный размер массива.

Каким образом можно определить объем памяти, выделяемой под двумерный массив?
1. использовать SizeOf
2. не использовать N*размер элемента, так как из-за выравнивания под один элемент массива может отводиться больше памяти, чем он занимает.
Остальные ответы
Вася Пупкин Ученик (102) 10 лет назад
Такое ощущение, что ты предварительно уже заплатил за эту работу.
Тишина Профи (876) 10 лет назад
Вообще, учебник по информатие предназначен для того, чтобы Вы знали ответы на эти вопросы. Вы пробовали его открыть?
Похожие вопросы