Как правило, при обработке оператора объявления переменной
имя: тип;
компилятор автоматически выделяет память под переменную имя в соответствии с указанным типом. Доступ к объявленной переменной осуществляется по ее имени. При этом все обращения к переменной заменяются на адрес ячейки памяти, в которой хранится ее значение. При завершении подпрограммы, в которой была описана переменная, память автоматически освобождается.
Доступ к значению переменной можно получить иным способом – определить собственные переменные для хранения адресов памяти. Такие переменные называют указателями.
Итак, указатель это переменная, значением которой является адрес памяти, по которому хранится объект определенного типа (другая переменная). Как и любая переменная, указатель должен быть объявлен. При объявлении указателей всегда указывается тип объекта, который будет храниться по данному адресу:
var имя_переменной: ^тип;
Такие указатели называют типизированными. Например:
var p: ^integer;
По адресу, записанному в переменной p будет храниться переменная типа int или, другими словами p указывает на тип данных integer.
Можно объявить указатель не связанный с каким либо конкретным типом данных:
var имя: pointer;
Например:
var x, y: pointer;
Подобные указатели называют нетипизированными и используют для обработки данных, структура и тип которых меняется в процессе выполнения программы, то есть динамически.