ТОР 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 интерпретируется как пробел. Задание. Наберите программу, откомпилируйте ее и проверьте действие. Не нашли, что искали? Воспользуйтесь поиском:
|