Különbség mutató és referencia között | Pointer vs Reference

Anonim

Kulcskülönbség - Pointer vs Reference

Mielőtt megbeszélnénk a mutató és a hivatkozás közötti különbséget, először nézzük meg röviden a két kifejezés jelentését. Egy programban az adatok foglalják el a memóriát. Meg kell ismerni a memória pontos helyét, amelyben az adatokat végrehajtási időben helyezték el. A mutatókat és referenciaváltozók használják az adatok eléréséhez és a memória címek kezeléséhez. Vagyis mindkét mutató és hivatkozás közvetett módon hivatkozhat tárgyakra. Alapjában véve a memóriacímeket értéküknek tartják. A kulcs különbség a mutató és a referencia között egy mutató egy változó, amely egy másik változó memóriahelyének címét tárolja míg egy referencia olyan változó, egy másik változóra. A két mechanizmus, a a mutató és a hivatkozás, eltérő szintaxissal és felhasználással .

Mi a mutató?

Egy mutató olyan programozási nyelvű objektum, amely tárolja a érték memóriacímét a számítási memóriában.

C ++ szintaxisban;

int i = 5;

int * ptr = & i;

Az első sor egy 5-ös értékkel inicializált változót definiál. A második sor egy mutatót határoz meg a változó memóriacímére. Itt a "ptr" -t "int" mutatónak nevezzük, amelynek kezdeti értéke az i objektum címe. Lényegében a ptr változó az i értéket tárolja memóriacímének tárolásával.

A memóriahelyen tárolt érték elérése dereferencing . Az * operátort használjuk a mutató távozásához. A deklarációk elvégzése után a ptr dereferenciák ptr közvetett kifejezése i.

Az i érték megváltoztatásához a hozzárendelés után lehet használni;

* ptr = 20;

A mutatók áthelyezhetők különböző objektumokhoz is.

A null mutató egy speciális típusú mutató. A null mutatót gyakran 0 vagy null jelöli, és semmit sem mutat. Jó gyakorlat a null mutató használata abban az esetben, ha nincs pontos címe a mutatónak. Ez a hozzárendelés logikai műveletek és körülmények között használható.

A mutatókat a dinamikusan elkülönített memória címek tárolására és kezelésére lehet használni. Az adatszerkezetek, például a halmok, a sorok és a listák végrehajtása és ellenőrzése hatékonyan használható mutatók használatával. Például egy sorban két mutató lehet; fejjel és mutatós mutatóval.A mutatókat is használhatjuk a változóknak a címükre való átvitelére, ami lehetővé tenné az érték megváltoztatását. A memóriával vagy a memóriával leképezett eszközök közvetlen manipulálása a mutatók használatával is kezelhető.

A mutatók lehetővé teszik a védett és védelem nélküli hozzáférést a memóriához. Ezért szükséges óvintézkedéseket kell tenni annak ellenőrzésére, hogy a mutató tartalma érvényes-e. Ellenkező esetben egy érvénytelen memóriacímmel rendelkező mutató eldobásával a program összeomolhat.

A mutatókat olyan nyelvek támogatják, mint a C, C ++, Pascal és sok szerelési nyelv.

Pointer a a b változóval társított memóriacímre mutat.

Mi a referencia?

A hivatkozás egyszerűen alternatív azonosító a memóriában tárolt értékhez. Lehetővé teszi a program számára, hogy közvetetten hozzáférjen egy adott nullaponthoz.

C ++ szintaxisban;

int i = 5;

int & ref = i;

Az első sor egy 5-ös értékű inicializálandó változót definiál. A második sor a "ref" kifejezést az "int referencia" típusú objektumra utalja, amely i. A hivatkozás különbözik az adatoktól, mivel a hivatkozás a memóriában tárolt egyedi nullapont fizikai címe.

Miután meghatároztuk, egy referenciát nem lehet új értéket hozzárendelni. A hivatkozás mindig azt az objektumot jelenti, amellyel inicializálódik. A következő hozzárendelésnél a ref még mindig i, de az érték most 20.

ref = 20;

A fenti példa szerint a dereferencia hivatkozások nem igényelnek semmilyen operátort.

A hivatkozások akkor használhatók, ha egy változó mindig egy objektumra utal. Ennek az az oka, hogy a hivatkozásoktól eltérően a hivatkozások nem lehetnek nullaak, és mindig az inicializáláskor kell megadni. Mivel a hivatkozásoknak mindig valamilyen objektumra kell vonatkozniuk, egy ilyen változó referenciaként való biztosítása biztosítja a program hatékony és helyes működését. Tekintettel arra, hogy nincs semmiféle referencia, a referencia-változó érvényességét nem kell megvizsgálni.

A referenciaváltozókat használhatják, hogy a nagy adatot argumentumként az eljárásokhoz továbbítsák. A hivatkozásokat szintén használják nagy adatok megosztására a különböző kódterületek között, mivel minden kód az adatokra hivatkozik.

A programozási nyelvek, például a C ++, a Java, a Python, a Perl, a PHP, a Ruby stb.

Mi a különbség a Pointer és a Reference között?

Pointer és hivatkozás meghatározása

Pointer: A mutató a számítási memóriában tárolt objektum memóriacíme.

Referencia: A hivatkozás alternatív azonosító vagy alias egy objektum számára.

A mutató és a referencia jellemzői

Nyilatkozat

Mutató: A mutatót a * operátorral jelöljük.

Referencia: A referenciát a & operátorral jelöljük.

Dereferencing

Pointer: A pointer változó megkívánja, hogy a * operátor le legyen dereferenciálva.

Referencia: A referencia-változó nem igényel semmiféle operátort.

Inicializálás

Pointer: A mutatók inicializálhatók nullra.Az ilyen változókat null pointereknek nevezik.

Referencia: A hivatkozásokat nem lehet inicializálni nullra. Nincs olyan, mint egy null referencia. A hivatkozásnak mindig objektumra kell utalnia.

Újbóli kijelölés

Mutató: Egy mutató változó átrendezhető, ha különböző objektumokra utal.

Referencia: A referenciaváltozót nem lehet újra hozzárendelni. Mindig azt az objektumot jelenti, amellyel inicializálódott.

Használat

Pointer: Pointer változókat kell használni, ha nincs utalás arra, hogy semmi sem létezik, vagy amikor különböző eseményekre kell utalni különböző időpontokban.

Referencia: Referenciaváltozókat kell használni, ha mindig olyan objektumra lesz szükség, amelyre hivatkozni kíván, és amikor nem szükséges használni, hogy az adott referencia-változó az objektumon kívüli egyéb elemekre hivatkozzon.

Alkalmazás alkalmazása

Pointer: Pointer változók használhatók algoritmusok és adatszerkezetek végrehajtására.

Referencia: Referenciaváltozók használhatók a függvényparaméterekben, és a visszatérési típusok hasznos interfészeket határoznak meg.

Használt nyelvek:

Pointer: A programozási nyelvek, például a C, C ++, Pascal és sok szerelési nyelv támogatja a mutatókat.

Referencia: A programozási nyelvek, például a C ++, a Java, a Python, a Perl, a PHP, a Ruby stb.

Image Courtesy: "Pointers" Ez a fájl a User által adott: SvenTranslation. Saját munka. Ezt a vektorképet az Inkscape segítségével hozták létre. (CC BY-SA 3. 0) a Commons -