Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




Лекція №1.

Тема: Посилальний тип даних. Операції над покажчиками. Розподіл пам’яті. Рекурсивні об’яви типів. Динамічні інформаційні структури та їх реалізація. Послідовності як абстрактні типи даних. Обчислювальні структури послідовностей.

План

1. Посилальний тип даних.

2. Операції над покажчиками.

3. Розподіл пам’яті.

4. Рекурсивні об’яви типів.

5. Динамічні інформаційні структури та їх реалізація.

6. Послідовності як абстрактні типи даних.

7. Обчислювальні структури послідовностей.

 

Литература

 

1. Марченко А.И., Марченко Л.А. Программирование в среде Turbo Pascal 7.0

2. Меженный О.А. Turbo Pascal

3. Павловская Т.А. Паскаль. Программирование на языке высокого уровня

4. Фаронов В.В. Turbo Pascal 7.0. Начальный курс. – Учебное пособие. – М.: Издательство «ОМД Групп», 2003 г. -616 с.

5. Фаронов В.В. Turbo Pascal 7.0. Практика программирования

6. Фаронов В.В. Turbo Pascal 7.0. Учебный курс

7. Н.Вирт. Алгоритмы + структуры данных = программы. Москва, Мир, 1985 г. 406 с.

8. Н.Вирт. Алгоритмы и структуры данных. Москва, Мир, 1989 г. 420 с.

9. http://www.intuit.ru/

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

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

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

var a: integer;

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

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

Адреса

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

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

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

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

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

Указатели

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

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

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

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

Например:

var p: ^integer;

q: ^real;

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

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

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

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...