Különbség mutató és referencia között | Pointer vs Reference
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 -