КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Динамические массивы в Pascal
BEGIN Динамические структуры данных. Динамические массивы (одномерные и двумерные), работа с ними
Основным отличием динамических массивов от статических является возможность изменения их размерности в ходе выполнения программы. Можно отметить следующие достоинства динамической памяти: 1) Экономичность и эффективность ее использования; 2) возможность динамического изменения числа элементов в связанных структурах, например в списках; 3) статические переменные существуют только в течение жизни блока, в котором они объявлены, а динамические – и после выхода из блока до окончания программы. 4) Переменная, размещаемая динамически, не объявляется в разделе VAR и не имеет имени в программе. компилятор не планирует выделение места в памяти под такие переменные. В Delphi: Динамический массив — это массив, память для которого выделяется динамически. Размерность динамического массива на момент компиляции не известна. Для объявления такого массива применяется обычное описание, но без указания размерности. Основным отличием динамических массивов от статических является возможность изменения их размерности в ходе выполнения программы. Динамические массивы— это тип данных с управляемым временем жизни, поэтому можно не думать о своевременном освобождении выделенной им памяти — она будет освобождена автоматически, когда данная переменная покинет область видимости. Описание динамического массива: Type <Имя типа массива> = Array of <Тип элементов> Память для элементов динамического массива выделяется с помощью вызова стандартной процедуры Setlength. Первым ее параметром является имя массива, а вторым задается требуемое количество его элементов. Использование таких массивов удобно тогда, когда мы изначально не можем точно определить его размер. Пример динамического массива: TYPE CODES = ARRAY OF INTEGER; VAR A:CODES; SETLENGTH (A,30); A[0]:= 'POOH LIKES HUNNY' END; Необходимо учитывать, что динамический массив индексируется значениями, отсчет которых начинается с 0. Чтобы обратиться к первому элементу массива, необходимо использовать индекс 0, а к последнему – 29. При необходимости память, выделенную под массив, можно освободить самостоятельно (например, если массив использовал слишком большое ее количество). Для этого достаточно просто присвоить массиву значение nil. Например: A:= nil; Пример многомерного динамического массива: Type Codes = array of array of array of integer; var A:Codes; Begin Setlength (A,10,20,30); end; Массив А имеет 10 элементов, каждый массив A[i] имеет 20 элементов, а массивы A[i][j] – 30 элементов
Обращение к участку динамической памяти в программе осуществляется с помощью специальной ссылочной переменной, которая называется указателем (ссылкой). Переменная типа «указатель» содержит адрес размещения участка динамической памяти, с которой связан этот указатель. Компилятор отводит под переменную типа «указатель» 4 байта статической памяти. Описание типа указатель: Type <идентификатор указателя>=^<тип>; P=^Word; P – идентификатор типа «указатель» на данные типа WORD. Динамическая память может быть выделена двумя способами: New (p), где Р – переменная типа «типизированный указатель» Getmem (P, size), где Р – переменная типа «указатель» требуемого типа, а size – целочисленное выражение размера запрашиваемой памяти в байтах. Эта процедура создает новую динамическую переменную требуемого размера и свойства, а также помещает адрес этой созданной переменной в переменную Р типа «указатель». Доступ к значению созданной переменной можно получить с помощью P^. При работе с массивами практически всегда возникает задача настройки программы на фактическое количество элементов массива. В зависимости от применяемых средств решение этой задачи бывает различным. Первый вариант - использование констант для задания размерности массива. Такой способ требует перекомпиляции программы при каждом изменении числа обрабатываемых элементов. PROGRAM FIRST;
Дата добавления: 2015-04-24; Просмотров: 4237; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |