Тема 14. Динамические переменные в языке Паскаль

Краткое изложение теоретического материала

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

Переменные в тексте программы описываются в разделе описания переменных. Например:

Var a, b: integer;

s: string;

m: array [1..100] of real;

Такие «обычные» статические переменные располагаются в части оперативной памяти компьютера, называемой сегментом данных (64 Кб). Перед исполнением программы в сегменте данных резервируются участки памяти, размер которых соответствует типу переменных, описанных в разделе описания переменных (VAR).

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

Необходимость в использовании динамических переменных возникает в следующих случаях:

1. Программа должна обрабатывать большие объемы данных (более 64 Кб).

2. Программа должна обрабатывать данные, объем памяти для хранения которых заранее неизвестен.

3. Тип обрабатываемых данных заранее неизвестен.

4. Программа использует динамические структуры данных (стек, очередь, двунаправленный список, дерево, граф и т.п.).

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

Указатели

Указатель – это переменная целого типа, которая интерпретируется как адрес какого-либо элемента данных (переменной, константы, адреса другого элемента данных). Т.е. указатель – это адрес. Кроме этого, употребляют термин ссылка. Это синонимы.

В языке Паскаль существует возможность получить значение адреса любой переменной, как статической, так и динамической. Это можно сделать посредством функции Addr.

Например, после исполнения команды присваивания

p:= Addr (a);

в переменную p будет записан адрес [1] переменной a. Вместо функции Addr можно использовать оператор @. То есть, вместо записанной выше команды можно написать:

p:= @a;

В языке Турбо Паскаль указатели бывают двух видов – типизированные и нетипизированные.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: