Yurijnd.com
Четверг, 06.02.2025, 20:03
Меню сайта

Вход на сайт

Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

    Онлайн всего: 3
    Гостей: 3
    Пользователей: 0

    Delphi. Pascal
    Урок 21. Указатели

    Описание указателя Пример
    имя-указателя: ^имя-типа; var pdata: ^data;
    Ссылка с помощью указателя Пример
    имя-указателя^ pdata^ := 0;
    Процедура Операция Пример
    new(имя-указателя) Выделить память для переменной (создать переменную для указателя) new(pdata);
    dispose(имя-указателя) Освободить память переменной (указатель:=nil) dispose(pdata);
     

    Указатель представляет из себя переменную, содержащую адрес другой переменной. Точнее говоря, указатель содержит адрес начала другой переменной (которая, в принципе, может занимать достаточно большой объем памяти).

    Указатели бывают типизированные и нетипизированные. Типизированные указатели содержат адрес переменной определенного типа. Так, например, типизированный указатель целого типа естественно содержит адрес переменной типа Integer.

    Для объявления типизированного указателя мы должны перед названием типа добавить знак ^. Если вы программировали на C/C++, то этот знак - это аналог звездочки. В такой указатель можно записать адрес некоторой другой переменной, для чего перед именем этой другой перемнной надо поставить значок взятия адреса @.

    По указателю мы можем получить как адрес другой переменной (указатель именно его и содержит) и значение переменной, на которую указатель показывает. Для получения значения переменной, на которую показывает указатель, мы используем разыменование указателя. Обратите внимание, что, в отличие от C/C++ для разименования указателя мы ставим значок ^ после имени указателя (а не перед, как в C/C++).

    Вот пример использования указателя:

    program Project1;
    
    {$APPTYPE CONSOLE}
    
    
    uses
     SysUtils;
    var
     n: Integer; // Объявляем целое.
     p: ^Integer; // Объявляем указатель на целое.
    begin
     { TODO -oUser -cConsole Main : Insert code here }
    
     // Инициализируем n.
     n:= 22;
     // Записываем в указатель p адрес переменной n.
     p:=@n;
     // Выводим разыменованный указатель (т. е. n).
     Writeln('^p=', p^);
     // Записываем в разыменованный указатель (т. е. n) 120.
     p^ := 120;
     // Выводим на экран n.
     Writeln('n=', n);
    
     Readln; //Ожидаем, пока пользователь нажмет Enter
    end.

    Результат будет таким:

    Copyright MyCorp © 2025
    Сделать бесплатный сайт с uCoz