Ajánlott, 2024

Szerkesztő Választása

A mutató és a referencia közötti különbség

A „mutató” és a „referencia” egyaránt egy másik változó irányítására vagy hivatkozására szolgál. De mindkettőjük között az alapvető különbség az, hogy a mutatóváltozó olyan változóra mutat, amelynek memóriahelye benne van. A referencia változó egy hozzárendelt változó álneve. Az alábbi összehasonlító táblázat a mutató és a referencia közötti különbségeket vizsgálja.

Összehasonlító táblázat

Az összehasonlítás alapjaMutatóReferencia
AlapvetőA mutató a változó memória címe.A hivatkozás egy változó álneve.
VisszatérA mutatóváltozó visszaadja a mutatóváltozóban tárolt címen található értéket, amelyet a '*' mutatójel előz meg.A referencia változó visszaadja a '&' referencia jel előtti változó címét.
Az üzemeltetők*, ->&
Null ReferenciaA mutatóváltozó NULL-re utalhat.A referencia változó soha nem hivatkozhat NULL-re.
inicializálásNem tervezett mutatót hozhat létre.Egy nem inicializált hivatkozást soha nem lehet létrehozni.
Az inicializálás idejeA mutatóváltozó a program bármely időpontjában inicializálható.A referencia változó csak a létrehozásakor inicializálható.
ReinicializálástA mutatóváltozó a kívánt esetben többször is újraindítható.A referencia változó soha többé nem lehet újraindulni a programban.

A mutató meghatározása

A „mutató” olyan változó, amely egy másik változó memóriahelyét tartja. A mutató változó által használt operátorok * és ->. A mutatóváltozó deklarációja tartalmazza az alapadat-típust, amelyet a '*' jel és a változó neve követ.

 * var_name; 

Egy példa segítségével értsük meg a mutatót.

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

Itt van egy a és egy egész változó, a ptr mutató változó, amely az a változó címét tárolja.

Mutató aritmetika

A mutatóváltozó két aritmetikai operátorral működtethető, amelyek „hozzáadás” és „kivonás”. A kiegészítést „növekménynek” nevezzük, a kivonás pedig „decrement”. Ahogy egy mutatóváltozó növekszik, az az alaptípus következő változójának memóriahelyére mutat. Ahogy egy mutatóváltozó csökken, az az alaptípus előző változójának memóriahelyére mutat. Ezért egy tömb hatékonyan elérhető egy mutatóváltozóval.

Többszörös irányítás

A mutató a másik mutatóváltozóra mutat, amely a célértékre mutat. Ez a fajta mutató mindig egy másik mutatóváltozó címével inicializálódik. A mutatónak a mutatóra való deklarálása a következő.

 típus ** var_name; 

Tanuljunk meg egy példával.

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

Funkció mutató

Mint tudjuk, hogy egy függvény nem változó, mégis van egy memóriahelye, amely egy mutatóváltozóhoz rendelhető. Ha egy mutató egy függvényre mutat, akkor a függvényt a funkció mutatóval hívhatjuk.

A fontos pontok, amelyeket a mutatóra emlékeztetni kell.

  • A mutatóváltozó az inicializálás nélkül hozható létre, és bárhol elindítható a programban.
  • A mutatóváltozó újra egy másik változóvá alakítható.
  • A mutatóváltozó NULL-re utalhat.

A hivatkozás meghatározása

A referencia változó arra a változóra utal, amelyhez a referencia változó tartozik. A referencia változó által használt operátor '&'. A referencia változó deklarációja bázistípust tartalmaz, amelyet "&" jel követ, majd a változó neve.

 írja be a & refer_var_name = var_ nevet; 

Itt a típus az adattípus, a & operátor megerősíti, hogy referencia változó. A refer_var_name a referencia változó neve. A var_name a változó neve, amelyre a referencia változót szeretnénk hivatkozni.

Egy példa segítségével megértsük a referencia változót.

 int a = 4; int & b = a; // b ab = 6; // most a = 6 

Itt az int típusú változóhoz 4-es érték van rendelve. A referencia-változót az a változó hozzárendeli, azaz b az a álnév. Most, amikor másik értéket rendelünk a b-hez, módosítjuk az a értékét. Ennélfogva elmondható, hogy a referencia-változóban végrehajtott változtatások az említett referencia-változó által hivatkozott változóban is előfordulnak.

A legfontosabb pont az, hogy a referencia változót a létrehozásakor kell inicializálni. Miután a referencia változót változóval inicializáljuk, nem lehet újraindítani egy másik változót. Mikor hozzárendel egy értéket egy referencia változóhoz, akkor ezt az értéket hozzárendeli egy változóhoz, amelyet egy referencia változó mutat. A referencia változó soha nem hivatkozhat NULL-re. Az aritmetikát nem lehet egy referencia változón elvégezni.

A referencia változó háromféleképpen használható:

  • Funkció visszatérési értékként.
  • Funkció paraméterként.
  • Önálló referenciaként.

A mutató és a referencia közötti különbségek

  1. A hivatkozás olyan, mint egy másik név létrehozása a változó hivatkozásához, így különböző nevekkel lehet hivatkozni. Másrészt, egy mutató egyszerűen egy változó memóriacíme.
  2. A '*' előtti mutatóváltozó visszaadja egy változó értékét, amelynek címe a mutatóváltozatban van tárolva. A '&' előtti referencia változó visszaküldi a változó címét.
  3. A pointer operátorok * és ->, míg a referencia operátor a &.
  4. Ha egy mutató változó nem hordoz semmilyen változót, akkor a nullra mutat. Másrészt, a referencia változó soha nem hivatkozhat Nullra.
  5. Mindig létrehozhat egy egységesített mutatóváltozót, de létrehozunk egy hivatkozást, ha valamilyen változó álnevére van szükségünk, így soha nem hozhat létre egy egységes referenciát.
  6. Újra inicializálhat egy mutatót, de miután inicializálta a befernce-t, nem lehet újra újraindítani.
  7. Egy üres mutatót hozhat létre, és bármikor inicializálhatja, de csak akkor kell inicializálnia a refrencet, ha létrehoz egy referenciát.

Jegyzet:

A Java nem támogatja a mutatókat.

Következtetés

A mutató és a hivatkozás egyaránt egy másik változó irányítására vagy hivatkozására szolgál. De mindkettő eltérő és eltérő.

Top