Форум программистов, компьютерный форум, киберфорум
dserp18
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Указатели Pascal

Запись от dserp18 размещена 11.09.2018 в 08:45
Показов 1830 Комментарии 1

Borland Pascal. Руководство пользователя

Обычно вы определяете ссылочные типы, которые указывают на конкретный вид элемента, например, целое значение или запись данных. Как вы далее увидите, можно извлечь преимущество из того факта, что указателю известно, на что он указывает. Чтобы определить типизированный указатель, вы можете описать новый тип, определенный символом каре (^), за которым следуют один или более идентификаторов. Например, чтобы определить указатель на Integer, вы можете сделать следующее:
Pascal
1
type PIneger = ^Integer;
Теперь вы можете описать переменные типа PInteger. Если вы не собираетесь часто использовать ссылочный тип, то можете просто описать переменные, как указатели на уже определенный тип. Например, если вы определили PInteger как ^Integer, то следующие описания переменной эквивалентны:
Pascal
1
var X: ^Integer: Y: PInteger;
Использование New как процедуры
New - это очень простая процедура. После описания переменной-указателя вы можете вызвать процедуру New
для выделения пространства в динамически распределяемой памяти для указываемого переменной элемента.
Приведем пример:
Pascal
1
2
3
4
5
6
var IntPointer: ^Integer; 
StringPointer: ^String; 
begin New(IntPointer); { выделяет в динамически распределяемой области два байта }
New(StringPointer); { выделяет в динамически распределяемой области 256 байт }
. . 
end.
После вызова процедуры New переменная-указатель указывает на память, выделенную в динамически распределяемой памяти. В данном примере IntPointer указывает на двухбайтовую область, выделенную процедурой New,
а IntPointer^ - это допустимая целочисленная переменная (хотя это целочисленное значение еще не определено).
Аналогично, StringPointer указывает на выделенный для строки 256-байтовый блок, а его разыменование дает доступную для использования строковую переменную.

Память, распределенная для переменных с помощью New, после завершения работы с ними должна освобождаться. Это позволит использовать динамически распределяемую память для других переменных. Чтобы освободить память, выделенную для динамической переменной, вы должны использовать процедуру Dispose. В Примере 8.2 вы можете добавить следующее:
Pascal
1
2
Dispose(StringPointer);
Dispose(IntPointer);
Нужно помнить, что если вы распределяете динамические переменные с помощью New, то освобождать выделенную для них память после завершения работы с этими переменными нужно с помощью Dispose.
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
  1. Старый комментарий
    Аватар для dserp18
    Относится к этой теме.
    Запись от dserp18 размещена 06.10.2018 в 09:32 dserp18 вне форума
 
Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru