Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BorlandPascal.doc
Скачиваний:
54
Добавлен:
17.03.2015
Размер:
2.83 Mб
Скачать

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

Расширенный синтаксис 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.

Строки с завершающим нулем и стандартные процедуры

Расширенный синтаксис Borland Pascal позволяет применять к

символьным массивам с нулевой базой стандартные процедуры Read,

ReadLn и Val, а к символьным массива с нулевой базой и символьным

указателям - стандартные процедуры Write, WriteLn, Val, Assign и

Rename. Более подробные описания этих процедур можно найти в Гла-

ве 1 ("Справочник по библиотеке") "Справочного руководства прог-

раммиста".

Соседние файлы в предмете Программирование на Pascal