mutatók delphi
Pointerek - a téma meglehetősen bonyolult egy kezdő, de Delphi alkalmazás lehet létrehozni
adni, és hogy nem alaposan ismeri. De, mint a fejlesztési, ukazatelimogut vált az egyik legerősebb programozási eszközök rendelkezésre
Pint = ^ egész; // pint - mutatót Integer
Ize = rekord // típus - Record
PFoo = ^ ize; // PFoo - a mutatót egy objektum típusú ize
A programozók C ++ Előfordulhat hasonlóság szereplő ^ Object Pascal és üzemeltetője * C ++ nyelven. Pointer típusú Object Pascal típusának void * C.
Ha a mutató nem mutat sehova (értéke 0), az index az e mondani, hogy annak értéke Nil, és a mutatót nevezzük nulla vagy nulla.
Ha szükség van hozzáférni az adatokhoz, amelyekre a mutató, akkor a ^ operátor, majd a változó nevét. Ezt a módszert nevezik mutató Igen (visszahivatkozási), valamint a közvetett hozzáférés. vzya Thieme értékeket. és visszahivatkozási hivatkozást. Az alábbiakban egy példát dolgozó mutató.
Új (Rec); // memóriát kiosztani az új rekord Rec
Rec ^ .I: = 10; // Tedd az adatokat bele. Felhívjuk figyelmét,
Rec ^ .S: = 'És most valami teljesen más.';
Dobja (Rec); // Ne felejtsük el, hogy a szabad memória!
end.Kogda az Új () függvény
Új () funkció használatakor elosztása során memória egy mutatót a struktúra dan- KORMÁNYZATI ismert mérete. Mivel a méret a szerkezete ismert, hogy a fordító, a koto- raj szükséges memóriát, amikor a New () függvény kerül kiosztásra deleno elegendő számú bájtot, valamint eljárás allokálására tótársa- előoldal és biztonságosabb, mint GetMem hívás () vagy AllocMem () . Ugyanakkor soha ne használja a New () függvény a memóriát egy PChar vagy Pointer típusok, mivel nem ismert, ebben az esetben a fordító, hogy mennyi memória dolzh- de kiosztandó. És ne felejtsük el, hogy használja a megsemmisíteni () függvényt osvobozhde- Nia lefoglalt memória az Új () függvényt.
Memóriát struktúrák, amelyek mérete fordítási időben még nem esedékes
Mellény, használt GetMem () és AllocMem (). Például a fordító nem tudja meghatározni előre, hogy mennyi memória kell kiosztani a struktúrák által megadott típusú változók PChar vagy Pointer miatt természeténél fogva ilyen típusú adatok. A legfontosabb - nem próbálja manipulálni a memória mennyisége több, mint ténylegesen kiosztott, mint a legvalószínűbb kimenetele az ilyen akciók lesz memória-hozzáférési hiba (access violation). A szabad memória használatával osztják a fenti funkciók, használja a FreeMem (). By the way, akkor jobb használni függvényében Al- locMem () memóriát, ahogy mindig inicializálja a memóriát értékei nulla.
Az egyik szempont a dolgozó mutatókat Object Pascal, ami jelentősen eltér a velük dolgozni, a nyelv a C, - ez a legszigorúbb gépelés. Így, az alábbi példában, pref dennom változók a és b nem kompatibilis típusú.
Ugyanakkor azonos leírást a C nyelv, ezeket a változókat van ez
PtrInteger = ^ egész; // Létrehozunk egy elnevezett típus
a, b: PtrInteger; // Most a és b típusú kompatibilis