Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






ЛЕКЦИЯ 7

Адреса и указатели.

 

Статически выделяемая память

 

Для того, чтобы лучше понять специфику динамически выделяемой памяти, рассмотрим сначала ее " антипод" - память, распределяемую статически.

 

Такое выделение памяти используется всякий раз при объявлении " обычных" переменных в разделе var. Каждая переменная обладает двумя атрибутами: именем и описанием.

 

var a: integer;

 

Описание переменной нужно для того, чтобы компилятор знал, сколько ячеек памяти необходимо выделить для ее хранения. Память под статическую переменную выделяется один раз (до начала работы программы), и затем до конца работы выделенная область памяти считается " занятой" - никакая другая информация не может быть записана в эту ячейку.

 

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

 

Адреса

 

Имя переменной является ее своеобразным (буквенным) адресом. Однако у любой переменной есть также и обычный (цифровой или физический) адрес: номер ячейки, выделенной под эту переменную.

 

При страничной организации памяти адреса являются составными и состоят из номера сегмента памяти и смещения ячейки относительно начала этого сегмента.

 

Лучшая иллюстрация страничной организации памяти компьютера - это страничная организация любой печатной книги. Для того чтобы найти нужную строчку, нет необходимости задавать ее номер, считая от начала текста. Вместо этого можно задать сначала номер страницы (= сегмент) и только затем номер строки, считая от начала этой страницы (= смещение).

 

Для обращения к статически заданной переменной можно использовать как ее имя, объявленное в разделе var, так и ее физический адрес.

 

Например, " адрес" одной и той же географической точки можно записать по-разному: " 49°47' северной широты и 86°36' восточной долготы" или просто " вершина пика Белуха Восточная".

 

Указатели

 

Для того чтобы хранить (цифровые) адреса, нужны особые переменные. Их называют указателями и относят к специальному типу данных.

 

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

 

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

 

var < имя_указателя>: ^< тип_адресуемой_переменной>;

 

Например:

 

var p: ^integer;

q: ^real;

s: ^array[1..10] of byte;

 

Кроме того, существуют универсальные нетипизированные указатели, которые могут хранить адрес переменной любого типа:

 

var < имя_указателя>: pointer;

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.