Priporočena, 2021

Izbira Urednika

Razlika med kazalcem in referenco

"Kazalec" in "referenca" sta uporabljena za usmerjanje ali napotitev druge spremenljivke. Toda osnovna razlika med obema je, da kazalec spremenljivke kaže na spremenljivko, katere pomnilniška lokacija je shranjena v njej. Referenčna spremenljivka je vzdevek za spremenljivko, ki ji je dodeljena. Primerjalna tabela prikazuje druge razlike med kazalcem in referenco.

Primerjalna tabela

Osnova za primerjavoKazalecReferenca
OsnovnoKazalec je naslov pomnilnika spremenljivke.Referenca je vzdevek za spremenljivko.
VrneSpremenljivka kazalca vrne vrednost, ki se nahaja na naslovu, shranjenem v spremenljivki kazalca, pred katerim je znak za kazalec "*".Referenčna spremenljivka vrne naslov spremenljivke pred referenčno oznako '&'.
Operaterji*, ->&
Null ReferenceSpremenljivka kazalca se lahko nanaša na NULL.Referenčna spremenljivka se nikoli ne more sklicevati na NULL.
InicializacijaUstvarite lahko neinicializiran kazalec.Nikoli ne moremo ustvariti neinicialne reference.
Čas inicializacijeSpremenljivka kazalca se lahko inicializira v katerem koli trenutku v programu.Referenčna spremenljivka se lahko inicializira samo v času njene izdelave.
Ponovna inicializacijaSpremenljivko kazalca lahko ponovno inicializirate tolikokrat, kot je potrebno.Referenčne spremenljivke v programu nikoli več ne moremo ponovno inicializirati.

Opredelitev kazalca

"Kazalec" je spremenljivka, ki vsebuje pomnilniško mesto druge spremenljivke. Operaterji, ki jih uporablja spremenljivka kazalca, so * in ->. Deklaracija spremenljivke kazalec vsebuje osnovni podatkovni tip, ki mu sledi znak "*" in ime spremenljivke.

 vnesite * var_name; 

Razumimo kazalec s pomočjo primera.

 int a = 4; int * ptr = & a; cout < 

Tukaj imamo celoštevilsko spremenljivko a in spremenljivko kazalca ptr, ki shrani naslov spremenljivke a.

Artehnika kazalca

Spremenljivko kazalca lahko upravljate z dvema aritmetičnima operaterjema, ki sta »dodatek« in »odštevanje«. Dodatek je označen kot "povečanje", odštevanje pa se imenuje "zmanjšanje". Ko se spremenljivka kazalca poveča, kaže na pomnilniško mesto naslednje spremenljivke svojega osnovnega tipa. Ko je spremenljivka kazalca zmanjšana, kaže na pomnilniško mesto prejšnje spremenljivke njenega osnovnega tipa. Zato lahko matriko učinkovito dostopamo s spremenljivko kazalca.

Večkratna usmeritev

Kazalec kaže na drugo spremenljivko kazalca, ki kaže na ciljno vrednost. Ta vrsta kazalca je vedno inicializirana z naslovom druge spremenljivke kazalca. Izjava kazalca na kazalec je naslednja.

 tip ** var_name; 

Preučimo ga z zgledom.

 int a = 4; int * ptr1 = & a; int ** ptr2 = & ptr1; cout < 

Funkcijski kazalec

Ker vemo, da funkcija ni spremenljivka, ima še vedno pomnilniško mesto, ki se lahko dodeli spremenljivki kazalca. Ko kazalec kaže na funkcijo, lahko funkcijo prikličete s tem kazalcem funkcije.

Pomembne točke, ki si jih morate zapomniti glede kazalca.

  • Spremenljivko kazalca lahko ustvarite brez njene inicializacije in jo lahko inicializirate kjerkoli v programu.
  • Spremenljivka kazalca se lahko ponovno inicializira v drugo spremenljivko.
  • Spremenljivka kazalca se lahko nanaša na NULL.

Opredelitev referenc. \ T

Referenčna spremenljivka se uporablja za sklicevanje na spremenljivko, ki je dodeljena tej referenčni spremenljivki. Operator, ki ga uporablja referenčna spremenljivka, je »&«. Deklaracija referenčne spremenljivke vsebuje osnovni tip, ki mu sledi znak '&' in nato ime spremenljivke.

 vnesite & refer_var_name = var_ ime; 

Tu je tip podatkovni tip, operater & potrdi, da je referenčna spremenljivka. Ime reference_var_name je ime referenčne spremenljivke. Ime var_name je ime spremenljivke, za katero želimo, da se sklicuje na referenčno spremenljivko.

Naj razumemo referenčno spremenljivko s pomočjo primera.

 int a = 4; int & b = a; / b se nanaša na ab = 6; // zdaj a = 6 

Tu je spremenljivki tipa int dodeljena vrednost 4. Referenčni spremenljivki je dodeljena spremenljivka a, tj. B je vzdevek a. Zdaj, ko b pripišemo drugo vrednost, spremenimo vrednost a. Zato lahko rečemo, da se bodo spremembe, ki so bile izvedene za referenčno spremenljivko, pojavile tudi v spremenljivki, ki jo določa referenčna spremenljivka.

Najpomembnejša točka je, da mora biti referenčna spremenljivka inicializirana v času svojega nastanka. Ko je referenčna spremenljivka inicializirana s spremenljivko, je ni mogoče ponovno inicializirati, da bi se nanašala na drugo spremenljivko. Ko dodelite vrednost referenčni spremenljivki, jo dodelite spremenljivki, na katero kaže referenčna spremenljivka. Referenčna spremenljivka se nikoli ne more sklicevati na NULL. Aritmetike ni mogoče izvesti na referenčni spremenljivki.

Referenčno spremenljivko lahko uporabite na tri načine:

  • Kot funkcija vrne vrednost.
  • Kot parameter funkcije.
  • Kot samostojna referenca.

Ključne razlike med kazalcem in referenco

  1. Referenca je podobna ustvarjanju drugega imena, ki se nanaša na spremenljivko, tako da jo lahko navedete z različnimi imeni. Po drugi strani pa je kazalec preprosto pomnilniški naslov spremenljivke.
  2. Spremenljivka kazalca, ki ji sledi '*', vrne vrednost spremenljivke, katere naslov je shranjen v kazalcu, ki je dosegljiv. Referenčna spremenljivka, ki ji sledi '&', vrne naslov te spremenljivke.
  3. Operaterji kazalcev so * in -> ker je referenčni operater &.
  4. Spremenljivka kazalca, če ne vsebuje nobenega naslova spremenljivke, ki kaže null. Po drugi strani se referenčna spremenljivka nikoli ne more sklicevati na Null.
  5. Vedno lahko ustvarite spremenljivko neuveljavljenega kazalca, vendar ustvarimo referenco, ko potrebujemo vzdevek neke spremenljivke, tako da nikoli ne morete ustvariti ponovnega imenovanja.
  6. Kazalec lahko ponovno inicializirate, vendar ko ga inicializirate, ga ne morete ponovno inicializirati.
  7. Lahko ustvarite prazen kazalec in ga inicializirate kadarkoli, vendar morate refrence inicializirati samo, ko ustvarite refernce.

Opomba:

Java ne podpira kazalcev.

Zaključek

Kazalec in referenca sta uporabljena za usmerjanje ali navajanje druge spremenljivke. Toda oba se razlikujeta glede uporabe in izvajanja.

Top