Динамическая память: Указатели

Работа с динамической памятью осуществляется с помощью указателей. Указатель – это переменная, в качестве своего значения содержащая адрес ячейки памяти. Указатель занимает 4 байта памяти (2 слова – адрес сегмента и смещение).

При помощи указателей мы можем размещать в динамической памяти фактический любой из известных в языке Турб-Паскаль тип данных. Некоторые типы занимают в памяти более одного байта, по этой причине на самом деле указатель будет адресовать лишь первый байт данных.

Чаще всего в Турбо-Паскале указатель связывается с определенным типом данных. В этом случае тип данных называется базовым, а указатель –  типизированным. Для объявления типизированного указателя используется значок ^, который должен помещается перед соответствующим типом. Например:

Выделение динамической памяти под переменную P происходит при вызове процедуры New(P). При этом размер выделяемого блока соответствует размеру базового типа. Для освобождения памяти, занятой динамической переменной P, используется процедура Dispose(P), при этом значение указателя P остается прежним. Чтобы обнулить освободившийся указатель, ему можно присвоить значение Nil.

Обращение к переменной базового типа, находящейся в динамической памяти осуществляется по имени указателя со значком ^.

x:=p1^; {переменной x присваивается значение элемента,

на который указывает p1}

p2^:=x; {элементу, на который указывает P2, присваивается

значение переменной x}

Итак, запомните, что сами данные, размещенные в динамической памяти, обозначаются значком ^, и он ставится сразу за указателем. Если же этого значка нет, то имеется в виду только тот адрес, по которому мы и размещали данные.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: