Переменная-указатель - Большая Энциклопедия Нефти и Газа, статья, страница 1
Когда ты сделал что-то, чего до тебя не делал никто, люди не в состоянии оценить, насколько трудно это было. Законы Мерфи (еще...)

Переменная-указатель

Cтраница 1


Переменная-указатель получает значение при создании динамической переменной, осуществляемом процедурой ALLOCATE. Кроме того, указатели можно присваивать друг другу и сравнивать на равенство и неравенство. Арифметические операции над указателями запрещены. Со всеми указательными типами совместимо специальное значение NIL. Его можно присваивать указателю, чтобы отметить, что он никуда не указывает.  [1]

В третьем примере объявлена переменная-указатель, поименованная pointer. Она указывает на массив из 10 элементов.  [2]

В приведенном примере значок показывает, что значение пять присваивается переменной, на которую указывает переменная-указатель.  [3]

В приведенном примере значок Л показывает, что значение пять присваивается переменной, на которую указывает переменная-указатель.  [4]

5 Блочная структура и схема совмещения полей основной памяти для параллельных блоков. [5]

Описание данных, размещенных в соответствии с базированным способом, включает описатель BASED, за которым в скобках записывается переменная-указатель.  [6]

Например, если р является указателем на тип real, то в результате выполнения процедуры new ( p); будет выделена память для переменной типа real ( создана переменная типа real), и переменная-указатель р будет содержать адрес памяти выделенной для этой переменной.  [7]

Для того чтобы понять, что такое указатель, полезно представлять, как он реализован. Переменная-указатель фактически содержит адрес объекта, на который указывает. Концепция адреса хорошо известна людям, программирующим на языках низкого уровня или ассемблерах.  [8]

На распечатке 7.8, поскольку список пуст, когда запускается программа, указатель HeadOfList инициализируется со значением NIL. В начале главного управляющего цикла переменная-указатель Item инициализируется так, что она находится в начале списка при поиске нужного места для вставки нового числа.  [9]

10 Связанный список. [10]

Мы все еще не сказали, что же представляет собой тип указателя. Его значением является адрес в памяти. Этот адрес в памяти задает положение информационного объекта, на который указывает переменная-указатель. Когда создается информационный объект, адрес нового информационного объекта присваивается переменной-указателю. Как мы увидим в § 7.2.2, переменные, на которые указывают типы указателей, являются динамическими, т.е. они могут создаваться ( или уничтожаться) во время выполнения программы.  [11]

12 Попытка изменения указателя-константы, ссылающегося на не-константные данные.| Попытка изменить константный указатель на константные данные. [12]

Минимальные права доступа предоставляет указатель-константа на константные данные. Такой указатель всегда указывает на то же самое место в памяти, а расположенные по этому адресу данные не могут модифицироваться. Этому варианту соответствует передача массива функции, которая только просматривает массив при помощи индекса и не изменяет его элементы. В программе на рис. 7.14 объявляется переменная-указатель ptr типа const int const. Объявление читается справа налево и звучит так: ptr - указатель-константа на целую константу. На рисунке показаны сообщения об ошибках, полученных в результате попытки изменить данные, на которые указывает ptr, и изменить присвоенный указателю адрес.  [13]

Доступ к памяти ЭВМ определяется путем ссылки на внутренние числа, называемые адресами. И переменные-указатели, и переменные-адреса содержат числа, соответствующие значениям, требующимся аппаратуре ЭВМ для поиска информации. Обычно программы на Модуле-2 никогда не ссылаются на конкретные машинные адреса, поскольку компилятор автоматически распределяет память для каждой переменной и эти адреса обычно недоступны прикладной программе. Даже при использовании динамических переменных и указателей программисту не требуется знать конкретное содержание переменной-указателя. Интерес представляет только объект, на который ссылается указатель. Поэтому Модула-2 задает только один указатель-константу NIL для обозначения того, что переменная-указатель не указывает ни на какой объект. Тем не менее некоторые ЭВМ используют некоторую форму ввода-вывода, при которой устройствам ввода-вывода присваиваются машинные адреса, как если бы устройство было частью памяти ЭВМ. Операционные системы и программы ввода-вывода должны иметь возможность обращаться к конкретным ячейкам памяти для работы с такими устройствами. В результате в Модуле-2 имеется возможность доступа к конкретным машинным адресам. В некотором смысле это средство эквивалентно константе-указателю.  [14]



Страницы:      1