Rozdiel medzi ukazovateľom a referenciou

Kľúčový rozdiel - ukazovateľ verzus referencia
 

Predtým, ako sa budeme zaoberať rozdielom medzi ukazovateľom a referenciou, pozrime sa najskôr na význam týchto dvoch pojmov. V programe údaje zaberajú pamäť. Presné umiestnenie pamäte, do ktorej boli dáta vložené v čase vykonávania, by malo byť známe, aby k nim bolo možné pristupovať. Premenné ukazovateľa a referenčné premenné sa používajú na prístup k týmto údajom a manipuláciu s adresami pamäte, na ktorých sa nachádzajú. To znamená, že ukazovatele aj odkazy sa môžu použiť na nepriamy odkaz na objekty. Ako svoje hodnoty v zásade uchovávajú adresy v pamäti. kľúčový rozdiel medzi ukazovateľom a odkazom je to ukazovateľ je premenná, ktorá ukladá adresu miesta v pamäti inej premennej zatiaľ čo a referencia je premenná, ktorá odkazuje na inú premennú. Dva mechanizmy, ukazovateľ a referencie, majú rôznu syntax a použitie.

Čo je ukazovateľ?

Ukazovateľ je objekt programovacieho jazyka, ktorý ukladá adresu pamäte hodnoty v počítačovej pamäti.

V syntaxi C ++;

int i = 5;

int * ptr = & i;

Prvý riadok definuje premennú inicializovanú s hodnotou 5. Druhý riadok definuje ukazovateľ na adresu pamäte premennej. Tu je 'ptr' deklarovaná ako objekt typu 'ukazovateľ na int', ktorého počiatočná hodnota je adresa objektu i. V podstate premenná ptr ukazuje na i uložením jej pamäťovej adresy.

Vyvolá sa získanie hodnoty uloženej v pamäti dereferencing. Operátor * sa používa na rozlíšenie ukazovateľa. Po vykonaní deklarácií sa nepriamy výraz * ptr dereferencie ptr vzťahuje na i.

Na zmenu hodnoty i sa môže použiť nasledujúce priradenie;

* ptr = 20;

Ukazovatele môžu byť tiež pridelené tak, aby odkazovali aj na rôzne objekty.

nulový ukazovateľ je špeciálny typ ukazovateľa. Nulový ukazovateľ je často označený ako 0 alebo nula a neukazuje na nič. Je dobrým zvykom používať nulový ukazovateľ v prípade, že k nemu nie je priradená presná adresa. Toto priradenie sa dá použiť v logických operáciách a podmienkach.

Ukazovatele môžu byť slúži na ukladanie a správu adries dynamicky pridelenej pamäte. Implementácia a kontrola dátových štruktúr, ako sú stohy, fronty a zoznamy, môže byť efektívna pomocou ukazovateľov. Napríklad front môže mať dva ukazovatele; ukazovateľ hlavy a ukazovateľ chvosta. Ukazovatele môžu byť tiež použité na odovzdanie premenných podľa ich adresy, čo by umožnilo zmenu hodnoty. Priama manipulácia s pamäťou alebo so zariadeniami mapovanými v pamäti sa dá zvládnuť aj pomocou ukazovateľov.

Ukazovatele umožňujú chránený aj nechránený prístup k adresovanej pamäti. Preto sa musia prijať potrebné bezpečnostné opatrenia na overenie platnosti obsahu ukazovateľa. V opačnom prípade by dereferencovanie ukazovateľa s neplatnou adresou pamäte mohlo spôsobiť zlyhanie programu.

Ukazovatele sú podporované v jazykoch ako C, C ++, Pascal a v mnohých jazykoch zhromaždenia.

ukazovateľ ukazuje na adresu pamäte spojenú s premennou b.

Čo je referencia?

Odkaz je jednoducho alternatívny identifikátor pre hodnotu uloženú v pamäti. Umožňuje programu nepriamy prístup k určitému počiatočnému bodu.

V syntaxi C ++;

int i = 5;

int & ref = i;

Prvý riadok definuje premennú inicializovanú s hodnotou 5. Druhý riadok deklaruje „ref“ ako objekt typu „odkaz na int“, ktorý odkazuje na i. Odkaz sa líši od samotných údajov, pretože je implementovaný ako fyzická adresa konkrétneho nulového bodu, ktorá je uložená v pamäti.

Po definovaní už nie je možné priradiť novú hodnotu novej referencii. Odkaz vždy odkazuje na objekt, s ktorým je inicializovaný. V nasledujúcom priradení odkaz stále odkazuje na i, ale hodnota je teraz 20.

ref = 20;

Podľa vyššie uvedeného príkladu odkazy na dereferencie nevyžadujú operátorov.

Odkazy sa môžu použiť, keď sa premenná vždy odvoláva na objekt. Je to tak preto, lebo na rozdiel od ukazovateľov nemôžu byť odkazy nulové a musia sa vždy priradiť pri inicializácii. Pretože odkazy musia vždy odkazovať na nejaký objekt, vytvorenie takejto premennej ako referencie zabezpečí, že program bude pracovať efektívne a správne. Vzhľadom na to, že neexistujú žiadne nulové odkazy, platnosť referenčnej premennej sa nemusí testovať.

Referenčné premenné môžu byť používa sa na efektívne odovzdávanie veľkých údajov ako argumentov do postupov. Odkazy sa používajú aj pri zdieľaní veľkých údajov medzi rôznymi oblasťami kódov, pretože každý kód uchováva odkaz na údaje.

Programovacie jazyky ako C ++, Java, Python, Perl, PHP, Ruby atď. Podporujú referencie.

Aký je rozdiel medzi ukazovateľom a referenciou?

Definícia ukazovateľa a referencie

ukazovateľ: Ukazovateľ je adresa pamäte objektu uloženého v počítačovej pamäti.

referencie: Odkaz je alternatívny identifikátor alebo alias objektu.

Vlastnosti ukazovateľa a referencie

vyhlásenie

ukazovateľ: Ukazovateľ je deklarovaný operátorom *.

referencie: Odkaz je deklarovaný operátorom &.

získavanie

ukazovateľ: Premenná ukazovateľa vyžaduje, aby bol operátor * dereferencovaný.

referencie: Referenčná premenná nevyžaduje, aby sa dereferencoval žiadny operátor.

Inicializácia

ukazovateľ:  Ukazovatele môžu byť inicializované na null. Takéto premenné sa nazývajú nulové ukazovatele.

referencie: Odkazy nie je možné inicializovať na null. Neexistuje nič také ako nulová referencia. Odkaz musí vždy odkazovať na objekt.

prevodov zamestnancov

ukazovateľ: Premenná ukazovateľa môže byť priradená k rôznym objektom.

referencie: Referenčnú premennú nemožno priradiť. Vždy sa odkazuje na objekt, s ktorým bol inicializovaný.

používanie

ukazovateľ: Ukazovatele ukazovateľa by sa mali používať, keď existuje možnosť odkazovať na nič, alebo ak sa vyžaduje, aby odkazovali na rôzne veci v rôznom čase.

referencie: Referenčné premenné by sa mali používať vtedy, keď bude vždy existovať objekt, na ktorý sa má odkazovať, a keď sa nevyžaduje, aby sa referenčná premenná použila na označenie iného objektu ako tohto objektu..

Použitie použitia

ukazovateľ: Premenné ukazovateľa možno použiť na implementáciu algoritmov a dátových štruktúr.

referencie: Referenčné premenné sa môžu použiť vo funkčných parametroch a návratové typy definujú užitočné rozhrania.

Použité jazyky:

ukazovateľ: Programovacie jazyky, ako sú C, C ++, Pascal a mnoho jazykov zostavy, podporujú ukazovatele.

referencie: Programovacie jazyky ako C ++, Java, Python, Perl, PHP, Ruby atď. Podporujú referencie.

Zdvorilosť obrázku: „Ukazovatele“ od tohto súboru vytvoril používateľ: SvenTranslation.Own work.This vektorový obrázok bol vytvorený pomocou Inkscape. (CC BY-SA 3.0) prostredníctvom Commons -