Студопедия

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

КАТЕГОРИИ:

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






Работа с динамическими переменными






 

Обратиться к динамической переменной можно с помощью операции разыменования:

 
 


Это выражение является переменной базового типа указателя. Разыменование нетипизованных указателей не имеет смысла.

После размещения динамической переменной в «куче» значение ее не определено и требуется инициализация. С помощью указателей, описанных в примере 1, могут быть созданы и инициализированы динамические переменные, например, следующим образом:

New(p1); Read(p1^); {Введем 67}

New(p2); p2^: =25;

Изобразим схематично результат выполнения этих операторов:

p1

 

p2

После выполнения оператора p2^: =p1^ имеем

p1

 

p2

После присваивания p2: =p1 схема имеет вид

p1

 

p2

 

Теперь переменные р1 и р2 ссылаются на одну и ту же область памяти, адрес переменной p2^ до присваивания утерян. Этого не должно быть, так как «засоряется» динамическая память. Перед присваиванием нужно было освободить память, обратившись к процедуре, например, dispose(p2).

Пример 2. Создание и инициализация структурированной динамической переменной p_vect, описанной в примере 1:

New(p_vect);

for i: =1 to 100 do read(p_vect^[i]);

p_vect^ имеет тип t_vect - массив, p_vect^[i] - элемент массива.

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал