Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные Паскаль.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
780.93 Кб
Скачать

2.2 Ссылочный тип данных и адресация

Динамические переменные в разделе описаний программы в явном виде не указывают, т.к. у них нет имени. Доступ к динамическим переменным осуществляется с помощью переменных специального типа данных, называемых ссылочными, а сами ссылочные переменные называют ссылками или указателями. Указатели могут быть типизированными и нетипизированными.

Типизированные указатели задают адреса области памяти, в которой хранятся или будут храниться данные базового, то есть заранее описанного стандартного или определённого программистом типа. Нетипизированные указатели задают адреса области памяти, в которой хранятся или будут храниться данные любого, заранее неизвестного типа.

Минимальной единицей памяти, которая может быть выделена под переменную или инструкцию программы, является байт. Каждый байт оперативной памяти имеет свой порядковый номер, называемый адресом.

Различные данные могут занимать в памяти один или несколько байт. Участок памяти, в котором хранится одно значение данных (один элемент данных), называют ячейкой памяти. Адресом ячейки является адрес её самого первого байта. Нумерация адресов начинается с нуля.

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

type

<имя типа ссылочной переменной> = ^<базовый тип д.п.>;

var

<имя д.п.> [, <имя д.п.>, ...] : <имя типа ссылочной переменной>;

<имя д.п.> [, <имя д.п.>, ...] : ^ <базовый тип д.п.> ;

Здесь д.п. – динамическая переменная. Базовым называют стандартный или заранее описанный тип данных.

Например, в разделе описаний программы (фрагмент приведен ниже) её строки описывают ссылочные типы и ссылочные переменные – указатели.

const

max = 150;

type

R = ^integer ;

T = ^real ;

A_mas = ^massiv;

massiv = array [1..max] of word;

var

a, b : R;

c : ^real;

d, f, g : T;

h, k : pointer;

m, n : A_mas;

Здесь R, T и A_mas – имена типов ссылочных (динамических) переменных целого (R) и вещественного (T) типов и типа массива (A_mas);

a и b – типизированные указатели (ссылочные переменные) на динамические переменные типа R, т.е. целого типа;

c, d, f и g – типизированные указатели на динамические переменные вещественного типа. Указатель "c" задан только в разделе переменных, а указатели d, f и g – через имя типа T;

m и n – типизированные указатели на динамические данные типа массива. При этом следует обратить внимание на то, что тип указателя massiv определён до определения базового типа array.

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

Указатели h и k являются нетипизированными, так как описаны словом pointer, и могут ссылаться на данные любого типа.

В объявлениях ссылочных типов после символа "^" может стоять только простое имя типа, например, real, integer, string, но не string [15] или array [1..7] of integer.

В случае сложных имён типов используют переопределение типов, то есть сначала определяют одним словом тип, являющийся сложным, например, массивом, а затем этот тип используют с символом "^".