Информатика и технология программирования


Иерархия и конструирование типов данных


В Си используется общепринятый принцип иерархического конструирования типов данных. Имеется набор базовых типов данных, операции над которыми включены в язык программирования. Производные типы данных конструируются в программе из уже известных, в том числе базовых типов данных. Понятно, что в языке программирования отсутствуют операции для работы с производным типом данных в целом. Но для каждого способа его определения существует операция ВЫДЕЛЕНИЯ СОСТАВЛЯЮЩЕГО ТИПА ДАННЫХ.

.


ПРОИЗВОДНЫЙ ТИП ДАННЫХ ОПЕРАЦИЯ ВЫДЕЛЕНИЯ СОСТАВЛЯЮЩЕГО ТИПА ДАННЫХ
Массив [] - элемент массива
Указатель * - косвенное обращение по указателю
Структура(объединение) . - элемент структуры
Указатель на структуру -&#62 - элемент структуры, адресуемой указателем
Функция () - вызов функции

Теперь рассмотрим известные нам операции с точки зрения взаимоотношения типов данных и переменных.


struct man A;
int n;
n = A.dd;

В программе определяется переменная производного типа данных -структурированная переменная A. Ее имя идентифицирует всю переменную в целом -область памяти с именем А, которой соответствует тип данных struct man . Операция "точка" в выражении A.dd выделяет в переменной A компоненту, которая соответствует составляющему типу данных int dd . Если рассматривать эту операция только с позиции преобразования типов данных, то в ней осуществляется переход от производного типа данных переменной А к типу данных составляющей ее компоненты -int .

Если эту схему представить в общем виде, то мы увидим, какие существуют взаимоотношения между типами данных, переменными и операциями выделения составляющих типов данных.


.
БТД --- тип выражения -----op2(op1(X))
| |
определение ПТД выделение составляющего ТД
| |
ПТД1 -- тип выражения --------- op1(X)
| |
определение ПТД выделение составляющего ТД
| |
ПТД2 --------------------------- X
определение переменной

Прежде всего, в программе создается цепочка определений производных типов данных: базовый тип данных (БТД) используется для определения производного (ПТД1), который в свою очередь используется для определения другого производного типа данных (ПТД2) и т.д..


Начало  Назад  Вперед