ПредишенСледващото

Показалки - темата е доста сложно за начинаещи, но молбата Delphi възможно да се създаде

за да се получи и не са напълно запознати с него. Но, тъй като на своето развитие, ukazatelimogut превърне в един от най-мощните инструменти за програмиране на разположение в

Пинта = ^ цяло число; // пинта - указател към цяло число

Foo = рекорд // Тип - Record

PFoo = ^ Фу; // PFoo - указател към обект от тип Фу

Програмистите в C ++ може да забележат сходство оператор ^ Object Pascal и оператор * C ++ език. тип Стрелката е в Object Pascal за тип невалидни * на C.

Когато курсорът не се насочва към нещо (стойността му е 0), индексът на това да кажа, че стойността му е Nil и показалеца се нарича нула или нула.

Ако трябва да има достъп до данни, до която точките на показалеца, можете да използвате ^ оператора, следвана от името на променливата. Този метод се нарича указател Издаден (dereferencing), както и непряк достъп. стойности vzya Thieme. и dereferencing справка. По-долу е пример за работа с указатели.

New (Rec); // памет за новия албум Rec

Rec ^ .I: = 10; // Поставете данните в него. Моля, обърнете внимание

Rec ^ .s: = ". И сега за нещо съвсем различно";

Изхвърлянето (Rec); // Не забравяйте да се освободи памет!

end.Kogda използва функцията New ()

Нова функция () се използва при разпределяне на памет за указател към структура опаснос- правителствен известен размер. Тъй като размерът на структурата е известно, че компилаторът, за koto- рояк необходимо да се отпуснат на паметта, когато новият () функция ще бъдат разпределени deleno достатъчен брой байтове, както и метод за разпределяне на крайъгълен лицева страна и сигурна от GetMem повикване () или AllocMem () , В същото време, никога не използвайте функцията за Нов (), за да разпредели памет за PChar или вида на показалеца, тъй като не се знае в този случай, компилаторът как да се разпределят много dolzh- памет, но. И не забравяйте да използвате функцията за Изхвърлете (), за да osvobozhde- Ния заделена памет използвате функцията New ().

За да се разпредели памет структури, чиито размери по време на компилация, все още не се дължи

Жилетка, използван GetMem () и AllocMem (). Например, компилаторът не може да се определи предварително колко памет трябва да се разпределят за структурите, въведени от променливите от тип PChar или показалеца, поради самото естество на този вид данни. Най-важното - не се опитвайте да се манипулира количеството памет, повече, отколкото в действителност е разпределена, като най-вероятният резултат от тези действия ще бъде грешка достъп до паметта (нарушение на достъп). За да освободите памет, разпределени с помощта на посочените по-горе функции, използвайте FreeMem (). Между другото, по-добре е да се използва функция на Ал locMem () да се разпределят на паметта, както винаги инициализира разпределени стойности памет на нула.

Един от аспектите на работата с указатели към обект Pascal, която се различава значително от работата си с тях в езика C, - тя е стриктна им пишете. По този начин, в примера по-долу, за поз dennom променливи а и б не са съвместими тип.

В същото време еквивалент описание на езика на С, тези променливи е с

PtrInteger = ^ цяло число; // Създаване на име на типа

А, В: PtrInteger; // Сега и тип б съвместим

Свързани статии

Подкрепете проекта - споделете линка, благодаря!