ВУЗ:
Составители:
Рубрика:
- 7 -
Заметим, что возможны случаи, когда синтаксически верное
обозначение переменной не имеет смысла. Тогда программа, в которой
встретилось такое обозначение, не может быть исполнена (или её исполнение
приведёт к ошибке). Например, обозначение a[i]ошибочно, если имя a в
программе не означает массив. Если это имя описано с помощью var a :
array[1..5] of integer, а значение индекса i во время исполнения
программы равно 6, то обращение к a[i] приведёт к ошибке, так как не
существует компоненты массива с таким индексом.
Следует проявлять осторожность и при работе с указателями. Если,
например, значение указателя q не определено или равно nil, то обращение
к q↑ приведёт к ошибке.
Теперь рассмотрим операции над ссылочными значениями одного и того
же типа. В Паскале ссылки можно присваивать и сравнивать на равенство и
неравенство. Присваивание осуществляется, как обычно, с помощью оператора
присваивания:
<ссылочная переменная> := <ссылочное выражение> ,
где <ссылочная переменная> – обозначение переменной ссылочного
типа, <ссылочное выражение> – это
либо пустая ссылка nil, либо
ссылочная переменная, либо вызов функции ссылочного типа.
Пусть переменные p и q имеют значения, изображенные на схеме:
Тогда логические выражения p=q и q<>nil дают значение "ложь". После
присваивания q:=p (результат изображен на рисунке)
значение q до присваивания
равно nil
значение q после присваивания
совпадает со значением p, т.е. q
ссылается на тот же объект, что и p
логические выражения p=q и q<>nil дают значение "истина".
Если объект, созданный с помощью оператора new, больше не нужен
программе, его целесообразно уничтожить, чтобы он зря не занимал место в
оперативной памяти (на его месте могут быть созданы другие объекты).
Уничтожение динамического объекта осуществляется оператором
процедуры dispose(<ссылочное выражение>). Значением
выражения,
указанного в качестве фактического параметра должна быть ссылка на уже
существующий динамический объект (иначе ошибка). Этот объект перестает
существовать, a ссылка на него удаляется из множества значений ссылочного
p
35
q
nil
p
35
q
{ q:=p }
p
35
q
nil
Заметим, что возможны случаи, когда синтаксически верное обозначение переменной не имеет смысла. Тогда программа, в которой встретилось такое обозначение, не может быть исполнена (или её исполнение приведёт к ошибке). Например, обозначение a[i]ошибочно, если имя a в программе не означает массив. Если это имя описано с помощью var a : array[1..5] of integer, а значение индекса i во время исполнения программы равно 6, то обращение к a[i] приведёт к ошибке, так как не существует компоненты массива с таким индексом. Следует проявлять осторожность и при работе с указателями. Если, например, значение указателя q не определено или равно nil, то обращение к q↑ приведёт к ошибке. Теперь рассмотрим операции над ссылочными значениями одного и того же типа. В Паскале ссылки можно присваивать и сравнивать на равенство и неравенство. Присваивание осуществляется, как обычно, с помощью оператора присваивания: <ссылочная переменная> := <ссылочное выражение> , где <ссылочная переменная> – обозначение переменной ссылочного типа, <ссылочное выражение> – это либо пустая ссылка nil, либо ссылочная переменная, либо вызов функции ссылочного типа. Пусть переменные p и q имеют значения, изображенные на схеме: p 35 q nil Тогда логические выражения p=q и q<>nil дают значение "ложь". После присваивания q:=p (результат изображен на рисунке) p p 35 { q:=p } 35 q nil q значение q до присваивания значение q после присваивания равно nil совпадает со значением p, т.е. q ссылается на тот же объект, что и p логические выражения p=q и q<>nil дают значение "истина". Если объект, созданный с помощью оператора new, больше не нужен программе, его целесообразно уничтожить, чтобы он зря не занимал место в оперативной памяти (на его месте могут быть созданы другие объекты). Уничтожение динамического объекта осуществляется оператором процедуры dispose(<ссылочное выражение>). Значением выражения, указанного в качестве фактического параметра должна быть ссылка на уже существующий динамический объект (иначе ошибка). Этот объект перестает существовать, a ссылка на него удаляется из множества значений ссылочного -7-
Страницы
- « первая
- ‹ предыдущая
- …
- 5
- 6
- 7
- 8
- 9
- …
- следующая ›
- последняя »