TURBO PASCAL |
Новости
|
Символьные указатели и строковые литералыПри разрешении расширенного синтаксиса строковый литерал совместим по присваиванию с типом PChar. Это означает, что пере- менной типа PChar можно присвоить строковый литерал. Например: var P: PChar; . . begin P := 'Привет...'; end; В результате такого присваивания указатель указывает на об- ласть памяти, содержащую строку с завершающим нулем, являющуюся копией строкового литерала. Компилятор записывает строковые лите- ралы в сегмент данных, аналогично описанию "скрытых" типизирован- ных констант: const TempString: array[0..14] of Char = 'Привет...'#0; var P: PChar; . . begin P := @TempString; end; Когда соответствующие формальные параметры имеют тип Char, строковые литералы вы можете использовать как фактические пара- метры при вызовах процедур и функций. Например, если имеется про- цедура с описанием: procedure PrintStr(Str: PChar); то допустимы следующие вызовы процедуры: procedure PrintStr('Строка для проверки'); PrintStr(#10#13); Аналогично тому, как это происходит при присваивании, компи- лятор генерирует строку с завершающим нулем, представляющую собой копию литеральной строки в сегменте данных, и передает указатель на эту область памяти в параметре Str процедуры PrintStr. Наконец, типизированная константа типа PChar может инициали- зироваться строковой константой. Это справедливо также для струк- турных типов, таких как массивы PChar и записи, а также объекты PChar. B.Pascal 7 & Objects/LR - 302 - const Message: PChar = 'Program terminated'; Prompt: PChar = 'Enter values: '; Digits; array [0..9] of PChar = { 'Zero', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', Eight', 'Nine'}; Строковая выражение-константа всегда вычисляется как строка Паскаля, даже если она инициализируется как типизированная конс- танта типа PChar. Таким образом, строковое выражение-константа всегда ограничено длиной в 255 символов. |
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |