[МУЗЫКА] [МУЗЫКА] Рассмотрим примеры того, как можно использовать указатели. Объявим две переменных — L1 и L2 — это будут указатели на целый тип. L от слова Link («связь»). Итак, у нас объявлены два таких указателя, при этом выделяется две области памяти для хранения соответствующих адресов. Значения в этих ячейках пока не определены. На картинках я буду изображать это таким расплывчатым неясным облачком. Итак, имеются два указателя, значения в этих ячейках не определены. Далее мы указателю L2 присваиваем значение константы NIL. При этом L1 остается неопределенным, а значение указателя L2 теперь определено и равно пустому указателю. Далее New (L1). Будет выделена область памяти для динамической переменной L1 разыменование. Для примера я взяла адрес этой области 0x02, далее я буду обозначать этот адрес A1. И это значение присваивается указателю L1. То есть указатеть L1 теперь получает значение 0x02, и с ним связана ячейка памяти A1, адрес которой равен 0x02, то есть выделена память связанная с этим указателем. Говорят, что указатель показывает на эту ячейку, и L2 у нас по-прежнему остается равным NIL. Продолжим. Далее мы с вами можем сказать: «L1 операция разыменования присвоить 13». Тогда в ту область памяти, которая связана с указателем L1 будет помещено значение, равное 13. Затем мы можем записать операцию присваивания «L2 присвоить L1». Указателю L2 будет присвоен тот же адрес, что и в L1. Теперь оба эти указателя показывают на одну и ту же область памяти, содержащую число 13, и мы можем обращаться к этой области как при помощи выражения L1 разыменование, так и при помощи L2 разыменование. Далее мы можем записать выражение «L2 операция разыменования присвоить L1 операция разыменования, например, + 7». Тогда значение переменной на этом месте увеличивается на 7. Берется исходное значение переменной, затем к нему прибавляется величина 7 и полученное значение записывается в эту ячейку памяти. Далее мы с вами можем выполнить стандартную процедуру New (L1). Что при этом получится? Для динамической переменой L1 операция разыменование, выделяется новая область памяти и этот указатель перестраивается на эту область. Например, пускай эта область имеет адрес 0x03. Далее мы можем записать следующую операцию: L1 разыменование, присвоить 23. В той ячейки, на которую указывает L1, появится значение, равное 23. Затем мы можем записать операцию присваивания «L2 разыменование присвоить L1 разыменование + 5». Динамической переменной L2 разыменование присвоится новое значение, которое будет равно 28. Как это происходит? Берется значение из ячейки, на которую указывает указатель L1, затем к нему прибавляется значение, равное 5, и полученное значение 28 записывается в ту ячейку, на которую указывает указатель L2. Далее Dispose (L1). При выполнении этой операции уничтожается динамическая переменная L1 разыменование, и эта память считается свободной. То есть теперь считается, что значение в этой ячейке не определено. [МУЗЫКА] [МУЗЫКА]