Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
ukazovateľ objekt , alebo len ukazovateľ , je premenná , ktorá obsahuje adresu pamäti , kde objekt , ako je napríklad struct alebo hladidlom , alebo pole objektov , je uložený . S týmto adresu v pamäti , môže programátor čítať , upravovať a prechádzať pamäte pomocou ukazovateľa .
Výhody
funkcie , ktoré sa ukazovateľ na externé objekt odovzdaný ako parameter môžete tento objekt upraviť . Keď je funkcia ukončí , bude nová hodnota priradená k tomuto objektu pretrvávajú . Funkcie môže trvať niekoľko ukazovateľov , ktorý umožňuje jednu funkciu modifikovať viac objektov s jedným volaním funkcie .
Ukazovateľ môže byť použitý pre prechádzanie pole prvkov , systematicky alebo náhodne pomocou poľa notácie , iterácie alebo základné matematiku . Použitie ukazovatele pre prístup k poľu je rýchlejší ako zložitejších implementácií podobné funkcie sa nachádzajú v iných jazykoch . Kým také implementácia sú často jednoduchšie a zabrániť chybám , tam je ďalší režijné náklady , ktoré má vplyv na výkon .
Význam
schopnosť dynamicky prideliť ľubovoľné množstvo haldy pamäte počas runtime je technika tzv " dynamická alokácia pamäte . " Mnoho starších jazyky , ako je Fortran , požadované množstvo pamäte pridelené pre stavby , ako sú matice , ktoré majú byť stanovené v dobe kompilácie , a množstvo pamäte pridelené nemožno zmeniť počas chodu programu . Ukazovatele sa používajú v C držať adresu dynamicky alokovanej pamäte .
Použitie
ukazovateľ je deklarovaný umiestnením hviezdičkou ( * ) medzi názvom typu a názov premennej .
hodnota objektu v pamäti na adrese držanie ukazovateľ je prístup " dereferencing " ukazovateľ . Získavanie ukazovateľ sa vykonáva uvedenie hviezdičkou ( * ) pred menom ukazovatele
Pri manipulácii s odkazmi na štruktúr , člen struct je odkazované pomocou šípky . ( - > ) Medzi nadpis ukazovatele a Názov členom .
adresa objektu možno pristupovať umiestnením ampersand ( & ) pred názov premennej objektu . Odovzdávanie adresy objektu do funkcie sa nazýva " prejsť odkazom . " Tento parameter je deklarovaný ako ukazovateľ na funkciu prototypu . Funkcie dereferences parameter , ktorý chcete zmeniť jeho hodnotu , a hodnota bude pretrvávať , pokiaľ sa funkcia ukončí .
Polia sú vytvorené prideľovanie množstvo pamäte potrebné držať požadovaný počet objektov daného typu . Toho je dosiahnuté v priebehu alebo po vyhlásení s ukazovateľom zápisu a malloc alebo calloc , alebo pri vyhlásení pomocou poľa notáciu . Prvky poľa možno pristupovať pomocou referenčnej index notáciu alebo iterácia ukazovateľ poľa . Iterácie sa automaticky zvýši alebo zníži adresu podľa veľkosti jednotlivých prvkov , takže ukazovateľ je správne umiestnená na začiatku budúceho alebo predchádzajúceho prvku .
Varovanie
pamäti alokácia a delokácia je riadená programátorom . Pamäť, ktorá bola pridelená , sa musí vrátiť , ak to už nie je potreba . Ak nie je navrátiť pamäť , zabraňuje používaný až do ukončenia aplikácie . " Pretekaním pamäti " dochádza pri odkaze na pridelenej pamäti je stratená , bez najprv uvoľniť pamäť . Úniky pamäte sa môže stať , keď je ukazovateľ pridelený , alebo funkcia ukončí bez delegovanie vlastníctva pridelenej pamäte .
Prístup k pamäti za koncom alokovanej pamäte je častá chyba pri práci s poľami . Táto chyba sa nazýva s " pole index out of bounds " . To môže spôsobiť , že aplikácia zle chová alebo neočakávane ukončiť .