ВУЗ:
Составители:
Рубрика:
237
var
pw: PWorker; {указатель на динамически создаваемую переменную}
begin
New(pw); {создали динамическую переменную типа TWorker}
pw^.Fio:='Иванов'; {присвоили полю Fio строку 'Иванов'}
pw^.Post:='директор'; {присвоили полю Post строку 'директор'}
pw^.Wages:=2500; {присвоили полю Wages значение 2500}
writeln(pw^.Fio); {вывели на экран строку 'Иванов'}
writeln(pw^.Post); {вывели на экран строку 'директор'}
writeln(pw^.Wages); {вывели на экран значение 2500}
Dispose(pw); {уничтожили созданную динамическую переменную}
end.
Замечание 1:
Доступ к динамически создаваемой переменной производится через
указатель на нее, после которого ставится значок ^.
Замечание 2:
После окончания работы с динамически выделяемой переменной, ее
необходимо уничтожить. Для этого используется процедура Dispose (если
переменная была создана при помощи New) или процедура FreeMem (если
переменная была создана при помощи GetMem (описаны ниже)).
Замечание 3:
Ни
в коем случае нельзя обращаться к памяти по адресу,
хранящемуся в неиницилизированном указателе (т.е. в указателе,
которому не присвоили значение адреса какой-то конкретной
переменной).
Пример:
var
pi:PInteger;
i:integer;
begin
pi^:=100; {Грубая ошибка, весьма часто приводящая к зависанию компьютера}
{Дело в том, что неинициализированный указатель pi все равно хранит
какое-то значение, которое при выполнении оператора pi^:=100;
интерпретируется как адрес переменной целого типа. Именно по
этому НЕОПРЕДЕЛЕННОМУ адресу и будет записано число 100.
Таким образом, число 100 может быть записано в любую
ячейку
памяти компьютера. Это, в некоторых случаях, будет приводить
к зависанию вашей программы или даже компьютера, а в некоторых
случаях никакими «спецэффектами» выдавать себя не будет.
Страницы
- « первая
- ‹ предыдущая
- …
- 235
- 236
- 237
- 238
- 239
- …
- следующая ›
- последняя »