Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Čo je ukazovateľ v C

? Jednou z vlastností , ktorá robí C ako výkonný programovací jazyk je schopnosť pre programátorov prístup k pamäti priamo pomocou ukazovateľa . Ukazovatele sú používané značne v jazyku C pre prácu s polí dát , manipulácia znakové reťazce , odovzdávanie parametrov funkciám a vytváranie prepojené zoznamy a iné komplexné dátové štruktúry . Ukazovatele sú jedným z najväčších zdrojov zmätku pre programátorov jazyka C nové . Pochopenie a použitie ukazovateľov je dôležité pre efektívne programovanie C. ukazovateľ
Ukazovateľ : Dbajte na to , aby upratať !
Funkcia

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ť .

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené