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

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

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

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 интерпретируется как пробел.

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








Дата добавления: 2015-05-16; просмотров: 693;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.