Лабораторный практикум по программированию на языке Паскаль. Найханова Л.В - 95 стр.

UptoLike

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