русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Указатели


Дата добавления: 2015-07-23; просмотров: 569; Нарушение авторских прав


Тип указателя сам по себе не является динамической структурой данных, часто его называют ссылочным типом. Это обычное четырехбайтное число, содержащее адрес, с которого начинается динамическая переменная. Адрес в архитектуре процессоров фирмы Intel – два целых беззнаковых числа, определяющие номер сегмента памяти и смещение внутри этого сегмента. Указатели используются для установления отношений или связей между динамическими структурами данных. Эти связи могут быть весьма сложными.

Обозначим динамическую структуру, называемую узлом, как:

При наличии одного указателя, показывающего на следующие данные, структура называется списком (в математике это является связанным списком). В общем случае в узле может содержаться несколько указателей, тогда структуру называют деревом (от генеалогического дерева). Список же является вырожденным деревом. Кроме того, на каждый узел может указывать произвольное число указателей.

В стандартном языке Паскаль указатели должны ссылаться на однотипные элементы данных, то есть являются типизированными. Существует специальное значение указателя NIL (пустой указатель), принадлежащее всем типам указателей. В этом случае указатель не указывает ни на какой элемент. Это значение применяется для обозначения конца списка или ветви дерева (по аналогии в функцией EOF).

Пример общего случая использования динамической структуры: ввод данных, располагаемых в порядке возрастания: 50, 40, 10, 20, 30.

 

Описание указателей:

Туре <имя_указателя>=^<базовый_тип>

Например:

Var z:^real;

 

Type poin=^T;

T=Record

str:string;

pnt:poin;

end;

Var p,q:Poin;

Здесь p и q – указатели на переменную типа Т (запись), чтобы обратиться к самой переменной, записывается p^, q^ (см. далее).

Замечание 1. Правило языка Паскаль: имя любого типа сначала должно быть определено, и лишь затем использовано. Единственное исключение – при определении ссылочного типа можно использовать имя типа, который определяется далее в тексте программы.



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

 

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

Для того чтобы присвоить переменной ссылочного типа определенное значение, необходимо воспользоваться операцией взятия адреса (указателя), – символа амперсанд «@» и переменной базового типа, например:

z:=@x;

Ссылочные типы можно образовывать от любых других типов, поэтому допустимо определение вида «указатель на указатель». Например, фрагмент программы:

Type p1=^integer;

Var pp1:^p1;

i:integer;

Begin

p1:=@i;

pp1:=@p1;

приводит к следующим связям:

Над значениями ссылочных типов допускаются только две операции сравнения на равенство и неравенство. Они проверяют, ссылаются ли два указателя на одно и то же место в памяти, или нет, например:

Sign:=P1=P2;

If P1<>nil then ...



<== предыдущая лекция | следующая лекция ==>
Динамические переменные | Работа с динамическими переменными


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.692 сек.