ВУЗ:
Составители:
Рубрика:
New(Buf2);
Этот оператор выделит в памяти 256-байтовый буфер и его адрес поместит в Buf2.
Ссылка на динамическую переменную, на которую указывает переменная указатель, записывается
в виде переменной указателя, после которой ставится символ указателя (^); оператор ^ (разыменование)
позволяет использовать данные, на которые указывает Buf2.
Например, необходимо поместить строку и в Buf1 и в буфер, на
который указывает Buf2:
Buf1 : = 'Эта строка помещается в Buf1';
Buf2^ : = 'Эта строка помещается по указателю Buf2';
Здесь Buf2 означает 4-байтовую переменную указателя, а Buf2^ 256-байтовую строковую переменную,
адрес которой содержит Buf2.
Другие примеры ссылок на динамические переменные:
P1^,
P1^.Sibling^,
Results[1].Data^.
Для освобождения памяти, на которую указывает переменная указатель, используется процедура
Dispose. После освобождения памяти следует присвоить указателю значение nil (указатель
ни на что не
указывает):
Dispose(Buf2);
Buf2 := nil;
Помимо процедуры New, переменной указателя можно присвоить значение с помощью оператора
@ или функции Ptr. Оператор @ устанавливает переменную указателя на область памяти, содержащую су-
ществующую переменную, включая и те переменные, которые имеют идентификаторы. Функция Ptr ус-
танавливает переменную указатель на определенный адрес в памяти.
Оператор @ возвращает адрес
заданной переменной. Если Sum переменная целого типа, то @Sum
- адрес в памяти этой переменной. Аналогично, если ChrPtr - это указатель на тип Сhar, то ChrPtr^ - это
символ, на который указывает ChrPtr.
3. Оператор @
Оператор @ является унарным оператором, в качестве операнда которого используется ссылка на
идентификатор переменной, процедуры или функции; операнду возвращается указатель. Тип этого значе-
ния
является таким же, как тип указателя nil, и, таким образом, его можно присвоить любому указателю.
Пример использования оператора @ для переменной.
Введем объявления
type
TwoChar = array [0 .. 1] of Char;
var
Int : Integer;
TwoCharPtr : ^TwoChar;
Тогда строка
TwoCharPtr := @Int;
приводит к тому, что TwoCharPtr указывает на Int. TwoCharPtr^ становится повторной интерпретацией
значения Int, как если бы она была символьным массивом array[0 .. 1] of Char.
New(Buf2); Этот оператор выделит в памяти 256-байтовый буфер и его адрес поместит в Buf2. Ссылка на динамическую переменную, на которую указывает переменная указатель, записывается в виде переменной указателя, после которой ставится символ указателя (^); оператор ^ (разыменование) позволяет использовать данные, на которые указывает Buf2. Например, необходимо поместить строку и в Buf1 и в буфер, на который указывает Buf2: Buf1 : = 'Эта строка помещается в Buf1'; Buf2^ : = 'Эта строка помещается по указателю Buf2'; Здесь Buf2 означает 4-байтовую переменную указателя, а Buf2^ 256-байтовую строковую переменную, адрес которой содержит Buf2. Другие примеры ссылок на динамические переменные: P1^, P1^.Sibling^, Results[1].Data^. Для освобождения памяти, на которую указывает переменная указатель, используется процедура Dispose. После освобождения памяти следует присвоить указателю значение nil (указатель ни на что не указывает): Dispose(Buf2); Buf2 := nil; Помимо процедуры New, переменной указателя можно присвоить значение с помощью оператора @ или функции Ptr. Оператор @ устанавливает переменную указателя на область памяти, содержащую су- ществующую переменную, включая и те переменные, которые имеют идентификаторы. Функция Ptr ус- танавливает переменную указатель на определенный адрес в памяти. Оператор @ возвращает адрес заданной переменной. Если Sum переменная целого типа, то @Sum - адрес в памяти этой переменной. Аналогично, если ChrPtr - это указатель на тип Сhar, то ChrPtr^ - это символ, на который указывает ChrPtr. 3. Оператор @ Оператор @ является унарным оператором, в качестве операнда которого используется ссылка на идентификатор переменной, процедуры или функции; операнду возвращается указатель. Тип этого значе- ния является таким же, как тип указателя nil, и, таким образом, его можно присвоить любому указателю. Пример использования оператора @ для переменной. Введем объявления type TwoChar = array [0 .. 1] of Char; var Int : Integer; TwoCharPtr : ^TwoChar; Тогда строка TwoCharPtr := @Int; приводит к тому, что TwoCharPtr указывает на Int. TwoCharPtr^ становится повторной интерпретацией значения Int, как если бы она была символьным массивом array[0 .. 1] of Char.
Страницы
- « первая
- ‹ предыдущая
- …
- 3
- 4
- 5
- 6
- 7
- …
- следующая ›
- последняя »