3.2.7 PChar - строки завершённые нулём

Вверх  Предыдущий  Следующий

Free Pascal поддерживает реализацию типа PChar как в Delphi. PChar определен как указатель на тип Char, но позволяет дополнительные операции. Тип PChar лучше всего воспринимать как Pascal-эквивалент для завершенных нулем строк из языка , то есть переменная типа Pchar это указатель, который указывает на массив символов завершенных нулем (#0). Free Pascal поддерживает инициализацию типизированных констант PChar, или прямого присвоения. Следующие части кода эквивалентны:

program one;

var P : PChar;

begin

P := 'Это заканчивающаяся нулём строка.';

WriteLn (P);

end.

Приведет к тому же, что и следующий код

program two;

const P : PChar = 'Это заканчивающаяся нулём строка.';

begin

WriteLn (P);

end.

Эти примеры также показывают, что возможно записать содержание строки в файл типа Text. Модуль strings содержит процедуры и функции, для манипуляции типом PChar как в стандартной библиотеке C. Так как PChar эквивалентен указателю на переменную типа Char, также возможно сделать следующее:

Program three;

Var S : String[30];

  P : PChar;

begin

S := 'Это заканчивающаяся нулём строка.'#0;

P := @S[1];

WriteLn (P);

end.

Этот код приведет к тому же результату что и предыдущие два примера. Завершенные нулем строки не могут быть объединены как нормальные Pascal строки. Если нужно объединить две PChar строки; должны использоваться ответствующие функции из модуля strings.

Однако, возможно использовать адресную арифметику с указателями. Операторы + и - могут использоваться для выполнения операций над указателями PChar. В таблице (3.5), P и Q имеют тип PChar, а I имеет тип LongInt.


Таблица 3.5: Адресная арифметика с указателями PChar

Операция

Результат

P + I

Добавляет I по адресу, на который указывает P.

I + P

Добавляет I по адресу, на который указывает P.

P - I

Вычитает I из адреса, на который указывает P

P - Q

Возвращает как целое, расстояние между 2-мя адресами (или количество символов между P и Q)