Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
paskal.doc
Скачиваний:
71
Добавлен:
10.06.2015
Размер:
1.28 Mб
Скачать

Пример программы с использованием динамической памяти

{Программа указателя на массив, доступа к элементам массива}

Program Point1;

Uses Crt;

Type

massiv=array[1..10] of integer; {описание типа массива из 10 целых чисел}

Var

i:integer;

a:massiv; {массив из 10 целых чисел}

PtrMas:^massiv;{указатель на массив}

Begin

{ввод элементов массива}

Writeln('Введите элементы массива : ');

for i:=1 to 10 do

begin

Writeln(i,'-й элемент массива ');

Readln(a[i]);

end;

ClrScr;

Writeln('Введенный массив: ');

{вывод элементов введенного массива }

for i:=1 to 10 do

Write(' ',a[i]);

Writeln;

{Присвоить указателю PtrMas адрес начала размещения массива в памяти}

PtrMas:=@a;

Writeln('Значение первого элемента массива, на который указывает PtrMas: ');

{Напечатать значение первого элемента массива, на который указывает указатель PtrMas}

Writeln(PtrMas^[1]);

{Присвоить указателю PtrMas  адрес начала размещения второго элемента массива}

PtrMas:=@a[2];

Writeln(' Значение второго элемента массива, на который указывает указатель PtrMas: ');

{Напечатать значение первого элемента массива, на который указывает указатель PtrMas}

Writeln(PtrMas^[1]);

Writeln(' Значение 4-того элемента массива, на который указывает указатель PtrMas: ');

{Присвоить указателю PtrMas адрес 4-того элемента массива}

PtrMas:=Ptr(Seg(a[3]),Ofs(a[3])+SizeOf(integer));

{Ptr- преобразует базовый адрес сегмента и смещения в значение типа указатель}

{Напечатать значение 1 элемента массива, на который указывает указатель PtrMas}

Writeln(PtrMas^[1]);

Readkey;

end.

Порядок выполнения работы

  1. Изучить теоретические сведения по теме ” Разработка программы использования динамической памяти”.

  2. Получить у преподавателя индивидуальное задание и разработать программу для работы с динамической памятью и динамическими переменными согласно заданному варианту.

  3. Показать работающую программу преподавателю.

  4. Ответить на контрольные вопросы.

Контрольные вопросы

  1. Статические и динамические переменные.

  2. Указатели: типизированные, нетипизированные, Nil. Доступ к переменной по указателю.

  3. Процедуры и функции управления динамической памятью

Лабораторная работа № 33

Разработка программы создания связанного списка

Цель работы: формирование знаний и умений по работе с динамической памятью. Приобретение навыков работы с динамическими структурами данных.

Краткие теоретические сведения

Использование указателей для организации связанных списков

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

Одно из полей каждого объекта связанного списка имеет тип указатель и указывает на очередной объект в списке. Указатель на первый объект содержится в переменной First, а последний объект имеет указатель на Nil.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]