Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Оператор @ с переменной




Использование @ с обычной переменной (не параметром процедуры) несложно.

Например, можно задать декларацию

Type

A = Array [0..99] of char; {Тип массива символов}

Var

X: Array [0..49] of integer; {Массив целых чисел}

pA: ^A; {Указатель на массив символов}

Объявлены переменные двух разных типов: массива целых из 50 элементов и ссылочного на тип А (массив из 100 символов). Чтобы указатель рА указывал на массив Х, надо присвоить ему адрес Х:

рА:= @Х; {Указатель на массив целых чисел}

Теперь pA^ ссылается на массив целых, но по своей природе он указатель на массив символов, поэтому при обращении pA^[i] мы получаем содержимое отдельных байтов массива Х в символьной форме.

Пример. Компонентам массива целых присваиваются сдвинутые на 65 значения индекса, печатается массив целых. Переменной-указателю на символьный массив присваивается адрес массива целых. Снова распечатывается массив, но по адресам значений. Вместо последовательности чисел будет напечатана последовательность ASCII символов от А до z с пробелами.

Program ReInterpretation;

{Интерпретация массива целых чисел как массива из символов}

Uses

Crt;

Type

A = Array [0..99] of char; {Тип A – массив 100 символов}

Var

X: Array [0..49] of integer; {Массив целых чисел}

pA: ^A; {Указатель на массив символов}

i: integer;

Begin

ClrScr;

for i:= 0 to 49 do

begin

X[i]:= 65+i {65 – код буквы А}

write(X[i], ' '); {Печать чисел}

End;

pA:= @X; {Указателю на А присваивается адрес массива целых чисел}

writeln;

for i:= 0 to 99 do

write(pA^[i],' '); {Печать символов}

End.

Попытка исполнить последний оператор до оператора pA:= @X привела бы к ошибке, поскольку указатель на массив был бы не опpеделен. Массив Х имеет значения 65..114, которые не выходят за пределы младшего байта двухбайтовых элементов типа word. В старших байтах этой переменной – нули. При побайтной печати массива младшие байты выводятся как буквы алфавита, а старшие – как символ #0, который процедурой write интерпретируется как пробел.

Задание. Наберите программу, откомпилируйте ее и проверьте действие.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных