Rozdiel medzi referenciou C ++ a ukazovateľom

Aj keď sa zdá, že odkaz na ukazovateľ C ++ je podobný, medzi obidvoma referenciami C ++ a ukazovateľom je výrazný rozdiel. Referenčnú premennú možno povedať ako iné meno pre existujúcu premennú. Po inicializácii tejto premennej sa názov premennej môže použiť na označenie inej premennej. Ukazovatele, na druhej strane, sú premenné, ktoré ukladajú adresu premennej. Ako každá premenná, sú deklarované ako prvé a potom je možné do nej uložiť adresu ktorejkoľvek premennej. Pozrime sa podrobne na rozdiely medzi referenciami C ++ a ukazovateľmi, ako je uvedené nižšie.

Porovnanie porovnania medzi referenciami C ++ a ukazovateľmi (infografika)

Nižšie je uvedený najlepší rozdiel medzi referenciou C ++ a ukazovateľom

Kľúčové rozdiely medzi referenčným jazykom C ++ a ukazovateľom

Obaja referencie C ++ vs ukazovateľ sú populárne voľby na trhu; diskutujme o niektorých hlavných rozdieloch medzi referenciou C ++ a ukazovateľom:

Hlavný rozdiel medzi referenciou C ++ a ukazovateľom spočíva v tom, že jeden odkazuje na inú premennú, zatiaľ čo druhá uchováva adresu premennej. Referencie nerobia zmenu v pôvodnej premennej, zatiaľ čo ak sa zmení ukazovateľ, ovplyvní pôvodnú premennú. Odkaz sa musí inicializovať pri vyhlásení, zatiaľ čo po vyhlásení nie je potrebné inicializovať ukazovateľ. Je možné vytvoriť pole ukazovateľov, zatiaľ čo pole odkazov nemožno vytvoriť. Nulovej hodnote nie je možné priradiť referenciu, ale môže byť priradená ukazovate¾u.

Porovnávacia tabuľka C ++ verzus ukazovateľ

Primárne porovnanie medzi referenciou C ++ a ukazovateľom je uvedené nižšie:

Základ porovnania medzi referenciou C ++ a ukazovateľomReferenčné číslo C ++ukazovateľ
premennéOdkaz sa dá povedať ako alias existujúcej premennej. Hlavné použitie tejto premennej funguje ako parameter, ktorý funguje ako referencia pass-by-reference. To sa odovzdá funkcii. Funkcia, ktorej sa toto odovzdá, pracuje na pôvodnej premennej namiesto kópie v hodnote pass. Zmeny vykonané vo funkcii sa prejavia aj vonku.Premenné ukazovateľa sú premenné, ktoré ukladajú adresu. Na rozdiel od bežných premenných, ktoré máme radi int, zdvojnásobíme a char uložíme adresy pamäte. Na uľahčenie programovania vzniká potreba tejto premennej. Je to premenná, ktorá dokáže uložiť hodnotu konkrétneho typu.
vyhlásenieVyhlásenie referenčnej premennej C ++ sa uskutoční pridaním symbolu „&“ pred premennú. Ak sa používa s výrazom, znamená to, že funguje ako adresa operátora. Používa sa na poskytnutie iného názvu pre existujúcu premennú.
syntaxe:
type & newName = existName ;
// alebo
type & newName = existName ;
// alebo
type & newName = existName ;
Napríklad:
/ * Vyhlásenie referenčnej skúšky a inicializácia * /
#include
pomocou namespace std;
int main () (
string name = „Priya“; // Vyhlásiť reťazcovú premennú s názvom name
string & refName = name; // Vyhlásiť odkaz (alias) na názov premennej
// Refname a name sa vzťahujú na rovnakú hodnotu „Priya“
cout << meno << endl; // Vytlačí hodnotu premennej „Priya“
cout << refName << endl; // Vytlačí hodnotu referencie „Priya“
Teraz zmeňte hodnotu názvu
refName = „Karishma“; // Zmeňte novú hodnotu pre refName
cout << refName << endl;
cout << meno << endl; // Hodnota čísla sa tiež mení na „Karishma“
name = “Snehal”; // Pomenujte novú hodnotu znova
cout << namer << endl;
cout << refName << endl; // Hodnota refName tiež mení „Snehal“
)
To znamená, že hodnoty referenčnej premennej je možné zmeniť v origináli a kópii premennej.
Pred použitím ukazovateľa kdekoľvek v programe by sa mal deklarovať vopred. Ak chcete deklarovať ukazovateľ a informovať systém o tom, že ide o ukazovateľ, premenná je označená znakom „*“. Ukazovateľ je sprevádzaný typom údajov, ktorý môže byť int alebo double, atď.
syntaxe:
typ * pntr ; // Vyhlásiť ukazovateľ premennú nazývanú pntr ako ukazovateľ typu
// alebo
typ * pntr ;
// alebo
typ * pntr ;
Napríklad:
int * newPtr; // Vyhlásiť premennú ukazovateľa s názvom newPtr smerujúcu na int (ukazovateľ int)
Tento ukazovateľ bude držať adresu. Táto adresa má int. Hodnotu.
double * newdPtr; // Vyhlásiť dvojitý ukazovateľ
Symbol * označuje, že je ukazovateľ deklarovaný a nepôsobí ako operátor.
preloženieReferenčnú premennú nemožno priradiť.
Príklad:
int x = 5;
int y = 6;
int & r = x;
Ukazovateľ môže byť priradený a táto vlastnosť sa hodí, keď vývojár implementuje dátové štruktúry, ako sú prepojené zoznamy, stromy atď.
Príklad:
int x = 5;
int y = 6;
int * p;
p = & x;
p = & y;
Adresa pamäteReferenčná premenná zdieľa rovnakú adresu ako pôvodná premenná. Tieto odkazy môžu byť odovzdané rôznym funkciám, môžu byť uložené v rôznych triedach atď. Odkaz nikdy neukazuje na novú premennú, pokiaľ nie je pôvodná vymazaná alebo je mimo rozsahu.Ukazovateľ má svoju vlastnú adresu pamäte a uloží ju do zásobníka. Ukazovateľ je nezávislá premenná a môže mať priradené nové hodnoty.
Null ValueOdkaz nemôže mať priradenú nulovú hodnotu.Ukazovateľ môže mať priamo priradenú nulovú hodnotu.
argumentyNa referenčnú premennú sa dá obísť pomocou hodnoty. Argumenty sa tu prenášajú pomocou funkcií. Vytvorí sa klon a odošle sa do funkcie, ktorá ho používa. Zmeny vykonané na kópii nemajú žiadny vplyv na pôvodnú premennú.Ak si želáme zmeniť pôvodnú kópiu, je to možné tak, že do funkcie odovzdáte ukazovateľ objektu. Toto je známe ako odkaz.
Kedy použiťReferencie nepriamo pristupujú k premennej. Zoberme si nasledujúci príklad:
enum deň
(
Nedeľa pondelok, …
);
Ak definujeme premennú
deň x;
A chceme preťažiť operátora príkazom, potom môžeme napísať nasledovne:
deň a operátor ++ (deň a d)
(
d = (deň) (d + 1);
návrat d;
)
Stručne povedané, môže sa to použiť vo funkčných parametroch a referenčných typoch.
Použitie ukazovateľov je bez predbežného vyhlásenia.
deň * operátor ++ (deň * d);
To sa dá použiť na implementáciu dátových štruktúr a aritmetických operácií ukazovateľa.

Záver - referencia C ++ vs ukazovateľ

S referenciou C ++ v porovnaní s ukazovateľom je ťažké pracovať, ale do veľkej miery zlepšujú efektívnosť programu. Obaja C ++ Reference vs Ukazovateľ majú svoje vlastné použitie a slúžia pre svoje vlastné účely. Ukazovatele môžete použiť, keď chcete implementovať dátové štruktúry a algoritmy, zatiaľ čo odkazy, keď chcete používať funkcie a parametre s návratovými typmi.

Odporúčaný článok

Toto bol sprievodca najväčšími rozdielmi medzi referenciou C ++ a ukazovateľom. Ďalej diskutujeme o kľúčových rozdieloch C ++ Reference vs Ukazovateľ s infografikou a porovnávacou tabuľkou. Ďalšie informácie nájdete aj v nasledujúcich článkoch -

  1. Rozdiely v Pythone verzus C ++
  2. Výkonnosť C vs C ++ - najlepšie rozdiely
  3. MongoDB vs Cassandra
  4. Mobx vs Redux
  5. C ++ Vector vs Array: Hlavné rozdiely
  6. MongoDB vs DynamoDB: Funkcie
  7. MongoDB vs SQL: Aké sú funkcie
  8. C vs C #: Funkcie

Kategórie: