TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Разыменование указателей 

             До сих пор мы видели,  как можно присваивать указателям зна-
        чения, но если вы не можете получить значения обратно,  польза от
        этого невелика.  Разыменовав типизированный указатель,  вы можете
        интерпретировать так,  как если бы это была переменная  типа,  на
        которую  он  указывает.  Чтобы разыменовать указатель,  поместите
        символ каре (^) после идентификатора указателя.

             Ниже показаны некоторые примеры разыменования указателя:

      type PInteger = ^Integer;

             var
               SomeNumber: Integer;           { присвоить SomeNumber 17 }
               SomeAddress := @SomeNumber;     { SomeAddress указывает на
                                                 SomeNumber }
               Writeln(SomeNumber);                     { напечатать 17 }
               Writeln(SomeAddress); { не допускается; указатели печатать
                                       нельзя }
               Writeln(SomeAddress^);                   { напечатать 17 }
               AnotherAddress := SomeAddress;        { также указывает на
                                                       SomeNumber }
               AnotehrAddress^ := 99;   { новое значение для SomeNumber }
               Writeln(SomeNumber);                     { напечатать 99 }
             end.

             Пример 8.1 Простые примеры разыменования указателей.

             Наиболее важными строками в Примере 8.1 являются следующие:

               AnotherAddress := SomeAddress;        { также указывает на
                                                       SomeNumber }
               AnotehrAddress^ := 99;   { новое значение для SomeNumber }

             Если вы поймете разницу между этими  двумя  операторами,  то
        поймете основные моменты в использовании указателей.  Первый опе-
        ратор присваивает адрес переменной  AnotherAddress;  он  сообщает
        ей, куда нужно указывать.  Второй оператор присваивает новое зна-
        чение элементу,  на который указывает AnotherAddress. На Рис. 8.1
        графически показано, как изменяется переменная.

                      ┌──────────┐┌───────────┐┌───────────┐┌───────────┐
        SomeNumber    │    17    ││    17     ││    17     ││    99     │
                      ├──────────┤├───────────┤├───────────┤├───────────┤
                      │    не    ││           ││           ││           │
        SomeAddress   │определено││@SomeNumber││@SomeNumber││@SomeNumber│
                      ├──────────┤├───────────┤├───────────┤├───────────┤
                      │    не    ││    не     ││           ││           │
        AnotherAddress│определено││определено ││@SomeNumber││@SomeNumber│
                      └──────────┘└───────────┘└───────────┘└───────────┘
                           ^            ^            ^            ^
                 SomeNumber := 17;      │            │            │
                                  SomeAddress :=     │            │
                                    @SomeNumber;     │            │
                                               AnotherAddress     │
                                                := SomeAddress:   │
                                                          AnotherAddress^
                                                             := 99;


Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz