TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

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

Странности

FAQ

Ссылки

Форум

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

Рассылка

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

Об авторе

 

 

Операции с символьными указателями 

             Расширенный синтаксис Borland Pascal позволяет  использовать
        для работы с символьными указателями отдельные операции. Для уве-
        личения или уменьшения смещения в значении  указателя  можно  ис-
        пользовать операции плюс (+) и минус (-). Операцию минус (-) мож-
        но использовать для  вычисления  расстояния  (разности  смещений)
        между двумя символьными  указателями.  Предположим,  что  P  и  Q
        представляют собой значения тип PChar,  а I - значение типа Word.
        Тогда допустимы следующие конструкции:

             P + I     I прибавляется к смещению P
             I + P     I прибавляется к смещению P
             P - I     I вычитается из смещения P
             P - Q     Смещение Q вычитается из смещения P

             В операциях P + I и I + P I прибавляется к адресу,  задавае-
        мому  P.  При  этом получается указатель,  который указывает на I
        символов после P.  В операции P - I I вычитается из адреса, зада-
        ваемого P,  и получается указатель,  указывающий на I символов до
        P.

             Операция P  - Q вычисляет расстояние между Q (младший адрес)
        и P (старший адрес).  При этом возвращается результат типа  Word,
        показывающий число символов между Q и P. Эта операция предполага-
        ет,  что P и Q указывают на один и тот же массив  символов.  Если
        эти два указателя указывают на разные символьные массивы,  то ре-
        зультат непредсказуем.

             Стандартный синтаксис Borland Pascal позволяет при сравнении
        указателей определять только их равенство или неравенство. Расши-
        ренный  синтаксис  (разрешенный  по  директиве компилятора {$X+})
        позволяет применять операции <, >, <= и <= к значениям PChar. За-
        метим,  однако,  что при таких проверках предполагается,  что два
        сравниваемых указателя указывают на один и тот же  массив  симво-
        лов. По этой причине сравниваются только смещения указателей. Ес-
        ли два указателя указывают на различные  символьные  массивы,  то
        результат не определен.

             var
                A, B: array[0..79] of Char;
                P, Q: PChar;
             begin
                P := A;                { P указывает на A[0] }
                Q := A + 5;            { Q указывает на A[5] }
                if P < Q then ...;     { допустимая проверка,
                                         результат - True }
                Q := B;                { Q указывает на B[0] }
                if P < Q then ...;     { результат не определен }
             end;

             Подробнее об операциях с PChar рассказывается в Главе 6.

Содержание

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

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

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

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

Hosted by uCoz