ВУЗ:
Составители:
Рубрика:
95
то применение этой операции к переменной i - @i дает в качестве результата значение типа
"указатель на целое".
Например:
P1 := @i ;
В обеих частях оператора стоят конструкции одного и того же типа.
В результате такого присваивания P1 получит в качестве своего нового значения указатель
на переменную i (адрес переменной i).
Операция взятия указателя допустима для любых переменных, в том числе для элементов
массивов, полей записи и т.д. Например, если есть описание вида
VAR
A : array [1..10] of integer;
то конструкция
@A[i]
имеет смысл "указателя на i - тое целое значение в массиве A" и может участвовать в
присваивании
P1 := @A[i];
Ссылочные типы можно образовывать от любых типов, поэтому допустимо определение
вида "указатель на указатель". Так, переменная из следующего описания
VAR
PP1 : ^P;
в качестве своих возможных значений имеет множество указателей, ссылающихся на
указатели, которые, в свою очередь, ссылаются на целые значения.
13.2. Пустой указатель
Среди всех возможных указателей в языке Паскаль выделяется один специальный
указатель, который "никуда не указывает". В этом случае в адресном пространстве
оперативной памяти выделяется адрес, в котором заведомо не может быть размещена
никакая переменная. На это место в памяти и ссылается пустой или "нулевой" указатель,
который обозначается служебным словом NIL.
Указатель NIL считается константой, совместимой с любым ссылочным типом, т.е. это
значение можно присваивать любому ссылочному типу.
13.3. Основные операции
Над значениями ссылочного типа допускается две операции сравнения:
а) равенство - " = ";
б) неравенство " <> ".
Эти операции проверяют, ссылаются ли два указателя на одно и то же место в памяти.
Например:
. . .
sign := p1 = p2; { sign является переменной ссылочного типа }
или
if p1 <> nil then
. . .
13.4. Доступ к переменной по указателю
Доступ к переменной ссылочного типа может быть осуществлен двумя способами:
1) прямой доступ - с помощью идентификатора;
2) косвенный доступ - путем использования адреса переменной, который хранится в
указателе. Например:
p1 := @i;
Для реализации 1-го способа достаточно использовать оператор присваивания, например:
i := i+2; { здесь считывается текущее значение i и увеличивается на 2}
то применение этой операции к переменной i - @i дает в качестве результата значение типа "указатель на целое". Например: P1 := @i ; В обеих частях оператора стоят конструкции одного и того же типа. В результате такого присваивания P1 получит в качестве своего нового значения указатель на переменную i (адрес переменной i). Операция взятия указателя допустима для любых переменных, в том числе для элементов массивов, полей записи и т.д. Например, если есть описание вида VAR A : array [1..10] of integer; то конструкция @A[i] имеет смысл "указателя на i - тое целое значение в массиве A" и может участвовать в присваивании P1 := @A[i]; Ссылочные типы можно образовывать от любых типов, поэтому допустимо определение вида "указатель на указатель". Так, переменная из следующего описания VAR PP1 : ^P; в качестве своих возможных значений имеет множество указателей, ссылающихся на указатели, которые, в свою очередь, ссылаются на целые значения. 13.2. Пустой указатель Среди всех возможных указателей в языке Паскаль выделяется один специальный указатель, который "никуда не указывает". В этом случае в адресном пространстве оперативной памяти выделяется адрес, в котором заведомо не может быть размещена никакая переменная. На это место в памяти и ссылается пустой или "нулевой" указатель, который обозначается служебным словом NIL. Указатель NIL считается константой, совместимой с любым ссылочным типом, т.е. это значение можно присваивать любому ссылочному типу. 13.3. Основные операции Над значениями ссылочного типа допускается две операции сравнения: а) равенство - " = "; б) неравенство " <> ". Эти операции проверяют, ссылаются ли два указателя на одно и то же место в памяти. Например: . . . sign := p1 = p2; { sign является переменной ссылочного типа } или if p1 <> nil then . . . 13.4. Доступ к переменной по указателю Доступ к переменной ссылочного типа может быть осуществлен двумя способами: 1) прямой доступ - с помощью идентификатора; 2) косвенный доступ - путем использования адреса переменной, который хранится в указателе. Например: p1 := @i; Для реализации 1-го способа достаточно использовать оператор присваивания, например: i := i+2; { здесь считывается текущее значение i и увеличивается на 2} 95
Страницы
- « первая
- ‹ предыдущая
- …
- 93
- 94
- 95
- 96
- 97
- …
- следующая ›
- последняя »