Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Работа с динамическими переменными
Обратиться к динамической переменной можно с помощью операции разыменования: Это выражение является переменной базового типа указателя. Разыменование нетипизованных указателей не имеет смысла. После размещения динамической переменной в «куче» значение ее не определено и требуется инициализация. С помощью указателей, описанных в примере 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] - элемент массива.
|