Основы программирования. Указатели. Динамические структуры данных. Абстрактные типы данных. Классы - 3 стр.

UptoLike

Составители: 

5
1 Указатели
1.1 Общие сведения
Оперативная память компьютера может рассматриваться как массив байтов,
индексируемый от нуля. Номер каждого байта в этом массиве называется его ад-
ресом. Адресом переменной называется адрес ее первого байта. Для получения
адреса переменной в языке Pascal используется унарная операция @: @xадрес
переменной x.
Переменные, в которых хранятся адреса, называются указателями. Любой
указатель
в 32-разрядной операционной системе занимает 4 байта. Это дает воз-
можность адресовать
Гб42
32
=
ячеек памяти. С переходом на 64-битные системы
объем адресуемой оперативной памяти станет практически безграничным.
Для чего нужны указатели? Их использование повышает гибкость програм-
мирования и разграничивает обязанности: указатель знает лишь адрес перемен-
ной, сама переменная может менять свое значение независимо от наличия указа-
теля на нее. Можно провести аналогию между
указателями и справочной службой
09. Клиент обращается в справочную службу для того, чтобы узнать номер теле-
фона абонента. Другими словами клиент обращается к указателю, который знает
адрес объекта и, следовательно, может вернуть значение этого объекта (в данном
случаеномер телефона). Гибкость такого способа очевидна: не следует помнить
номера всех телефонов, достаточно
знать номер телефона справочной. Кроме то-
го, если номер телефона абонента будет изменен, то в справочной службе будет
произведена оперативная корректировка информации, и при последующем обра-
щении в службу клиент получит измененный номер телефона. Другой пример: не-
сколько указателей (банкоматов) указывают на один объект (банковский счет).
Посредством разных банкоматов можно снимать
деньги с одного банковского
счета. Третий пример: файловый указатель, который обращается всякий раз к те-
кущему элементу файла, после чего перемещается на следующий. Это позволяет
единым образом (через один указатель) работать с различными данными, нахо-
дящимися в файле.
В языке Delphi Pascal указатели делятся на типизированные и бестиповые.
Если Tнекоторый тип,
то типизированный указатель на него описываются сле-
дующим образом: ^T (указатель на тип). Бестиповой указатель описывается с по-
мощью типа pointer. Если типизированный указатель хранит адрес переменной
заданного типа, то бестиповой хранит просто адрес некоторого участка памяти.
Будем изображать тот факт, что указатель pa хранит адрес переменной a,
следующим образом:
pa
a