Razlika med kazalcem in referenco

Tako kazalci in reference so najmočnejše funkcije v C in C ++, ki programerjem omogočajo neposredno upravljanje s pomnilniškim naslovom za učinkovito upravljanje pomnilnika..

Obe sta spremenljivki, ki se posredno nanašajo na druge predmete in imajo na površini nekatere skupne značilnosti. Čeprav imajo veliko skupnih zmožnosti, so tudi zelo zapletene za razumevanje.

Kazalnik je spremenljivka, ki ima pomnilniški naslov druge spremenljivke, medtem ko je referenca podobna kazalcu, ki se lahko uporablja za posredno sklicevanje na drugo spremenljivko.

Zdi se, da večina programerjev razvija neko razumevanje, kdaj uporabiti kazalce in kdaj uporabljati reference, vendar se pogosto srečujejo s težavami, katerih rešitev se zdi nejasna..

Torej, da bolje razumemo filozofijo, razumemo razliko med obema.

Kaj je kazalec?

Vsaka spremenljivka je pomnilniška lokacija, ki je določena z naslovom in je seznanjena z identifikatorjem, ki vsebuje neko vrednost, ki se lahko spremeni med potekom programa. Preprosto povedano, spremenljivka je simbol, ki predstavlja količino.

Kazalnik je spremenljivka, ki vsebuje pomnilniški naslov druge spremenljivke. Kazalec ni nič drugega kot naslov in spremenljivka, ki shrani kazalec, se imenuje kazalec spremenljivka.

Ideja je, da namesto številskih naslovov uporabite identifikatorje (ali imena), da olajšate breme programiranja in s tem zmanjšate zapletenost programov. Ker se ti naslovi nanašajo na dejanske lokacije v računalniškem pomnilniku, lahko s kazalci dostopate do vsebin, shranjenih v pomnilniku in z njimi manipulirate.

Kot vse spremenljivke ali konstante je treba tudi za svoje tipe navesti kazalce. Ker kazalci vsebujejo pomnilniške naslove, ki pripadajo ločenemu tipu podatkov, jih morate razglasiti s kazalci, preden lahko delate z njimi. Splošna oblika kazalca kazalca je:

Podatkovni tip * var-name;

Tu je "Data_type" osnovna vrsta kazalca, "var-name" pa spremenljivka kazalca. Zvezdica (*) se tukaj uporablja za razglasitev kazalca, ki označuje spremenljivko "var-ime" kot spremenljivko kazalca.

int * p; // celoten kazalec

plovec * x; // float kazalec

Tu spremenljivka "p" kaže na celoten tip podatkov, ki je deklariran kot "int", ki se nanaša na podatkovni tip spremenljivke. Podobno se v drugem primeru "float" nanaša na podatkovni tip spremenljivke "x", ki je dejansko označen kot kazalec na spremenljivko s plavajočo vejico..

Kaj je referenca?

Sklic je kot kazalec s posrednim dostopom do spremenljivke. To je kot vzdevek druge spremenljivke, kar pomeni, da je to samo drugo ime za že obstoječo spremenljivko.

Programerjem omogoča, da ustvarijo drugo ime spremenljivke, s katerim lahko manipulirajo z vsebino, shranjeno v tej spremenljivki. Subjekt je vzdevek druge spremenljivke in ima isti naslov kot izvirna spremenljivka. Podpira prehodno referenco, ki deluje kot funkcijski formalni parametri in ko je definirano, da se nanaša na spremenljivko, je ni mogoče ponovno uporabiti, kar pomeni, da je ni mogoče napotiti na drugo spremenljivko.

Za razliko od kazalcev, za dostop do vrednosti ne potrebujejo operaterja za preusmeritev; v resnici jih je mogoče uporabiti kot običajne spremenljivke.

int i;

int & ri = i;

Tu je "ri" celo število, inicializirano na "i". Izjavi „ri“ kot objekt tipa „sklicevanje na int“. Referenco je mogoče enostavno zamenjati s kazalcem, ki je neodvisna spremenljivka, katerega naslova ni mogoče prerazporediti po ustvarjanju.

Razlika med kazalcem in referenco

  1. Osnove kazalca in reference

- Oba zagotavljata skoraj podobne zmogljivosti v smislu uporabnosti in razlikovanje je lahko težavno. Kazalnik je le spremenljivka, ki shrani spominski naslov druge spremenljivke, medtem ko je referenca podoben vzdevku že obstoječe spremenljivke. Ustvari drugo ime spremenljivke, ki se lahko uporablja za spreminjanje vsebine, shranjene v tej spremenljivki.

  1. Izjava kazalec in referenca

- Kazalec je kot katera koli druga spremenljivka, ki shrani del podatkov. Za razliko od drugih spremenljivk kazalci spremenljivke shranjujejo pomnilniške naslove namesto vrednosti. Kazalnik se odvzame z operaterjem indirekcije * za dostop do pomnilniškega mesta spremenljivke, na katero kaže. Na drugi strani referenca za dostop do vrednosti ne potrebuje nobenega operaterja za odstranjevanje.

  1. Ponovna dodelitev kazalca in referenc

- Za razliko od kazalcev, ki jih je mogoče kadar koli inicializirati, je treba ob inicializaciji dodeliti reference. Do kazalcev je mogoče dostopati neposredno, medtem ko do referenc ni mogoče neposredno dostopati.

  1. Pomnilniški naslov za kazalec in referenco

- Kazalna spremenljivka ima v pomnilniku svojo lokacijo, kar pomeni, da ko deklarirate kazalec, določite lokacijo, ki je pomnilniški naslov, dodeljen vsaki enoti pomnilnika. Spremenljivka kazalca ima isti naslov, kjer je shranjena v pomnilniku. Referenčna spremenljivka je na drugi strani vzdevek druge spremenljivke, s čimer prevzame naslov referenčne spremenljivke.

  1. NULL vrednost za kazalec in referenco

- NULL predstavlja konec seznama, kar pomeni, da pomeni, da vrednost ni znana in določa, da spremenljivka nima veljavnega naslovnega prostora. Vrednost NULL je lahko dodeljena neposredno kazalec spremenljivki, kar pomeni, da ne kaže nikjer, medtem ko NULL ni mogoče dodeliti referenčni spremenljivki.

Pointer vs. Reference: Primerjalna tabela

Povzetek Pointer vs. Reference

Kazalci so bili vedno med najljubšimi temami razpravljavcev programov C / C ++, dokler se reference niso pojavile. Reference so nekoliko podobne kazalcem, vendar imajo v primerjavi z njimi pravičen delež prednosti in slabosti. Medtem ko se oboje lahko uporablja za spreminjanje lokalnih spremenljivk ene funkcije znotraj druge funkcije, imata svoje razlike. Obe sta zmogljivi funkciji v C in C ++, ki vam omogočata neposredno manipuliranje s spominom, vendar z nekaj izjemami. Kazalec vsebuje pomnilniški naslov spremenljivke, medtem ko je referenca samo vzdevek druge spremenljivke.