Персональная страничка
Диканева Тараса
Викторовича

Главная \ Преподавательское \ Программирование для начинающих

16. Указатели

Предыдущий раздел:

Следующий раздел:

16.2. Нетипизированные указатели

Хотя значениями ссылочных типов, образованных от любого базового типа, являются адреса в памяти прямое присваивание значений разнотипных указателей запрещено. Пусть, например, имеется описание:

  var
    x, y: ^integer;
    z: ^real;

Допустимы присваивания однотипных указателей:

  x:=y;

И не допустимы присваивания:

  x:=z;
  z:=y;

Чтобы обойти это ограничение можно описать указатель, не связанный с определенным типом данных. Для этого существует тип Pointer.

  var
    p: Pointer;

Нетипизированные указатели совместимы с любыми типизированными укзателями. Соответственно допустимо:

  p:=x;
  z:=p;

После таких присваиваний x и z содержат один и тот же адрес памяти. Однако содержимое этой памяти будет интерпретироваться по-разному: x^ — как целое, z^ — как вещественное число.

Следующий раздел:

Предыдущий раздел:

1 комментарий

  1. Yayaya

    Тут ошибка:
    Да, мы передали через pointer адрес от одного указателя к другому, но если вы теперь вызовете z^, то получите полную ерунду! Это связано с тем, что типизированные указатели применяю к данным в памяти свою разрядную сетку, а у целого и вещественного числа она существенно отличается!

Добавить комментарий