A programozásban a hivatkozás egy olyan objektum, amely bizonyos adatokra mutat, de nem tárolja azokat. Egy objektum hivatkozással történő lekérését hivatkozás megszüntetésének nevezzük .
A hivatkozás nem mutató , hanem egyszerűen egy objektum egy másik neve. A fő különbség a hivatkozás és a mutatók között az, hogy a mutató egy egész szám, ezért egész számokkal végzett műveletek állnak rendelkezésre, míg hivatkozáshoz csak másolási és hivatkozási műveletek érhetők el.
A programozási nyelvekben a referencia egy memóriahely címét tartalmazó változóként valósítható meg . Egyes magas szintű nyelvek képesek objektumhivatkozások használatára is, amikor objektumokat adnak át egy szubrutinnak, illetve onnan.
A C++ nyelvű hivatkozásokat valamilyen objektumhoz kell társítani. Így a C++-ban nincsenek "null hivatkozások" (egyetlen objektumhoz sem társítva). A hivatkozások visszaállításához C++ nyelven nincs szükség speciális operátorra. Így a C++-ban a hivatkozások egy címet közvetlenül a verembe adnak, megkerülve a másolást és a mutatókat. Fordításkor az objektumra és annak nevére vonatkozó összes hivatkozást ennek az objektumnak egyetlen száma helyettesíti.
A következő példában az x paramétert érték, az eredményt pedig referencia adja át. A függvény eredménye az eredménybe kerül:
#include <iostream> névtér használata std ; // e bejegyzés nélkül hozzá kellene fűznünk az "std::"-t a cout és endl értékekhez üres négyzet ( int x , int & eredmény ) { eredmény = x * x ; } int main () { int y = 0 ; // Négyzet inicializálása ( 3 , y ); cout << "y=" << y << endl ; //y=9 return 0 ; }A Java nem rendelkezik a mutató fogalmával, és a C# ritkán használja helyette a hivatkozás fogalmát. A hivatkozások törlése és az objektumcímek hivatkozásokhoz való hozzárendelése nem igényel speciális operátort.
A PHP-ben a hivatkozások egyetlen változó tartalmának különböző neveken való elérésének eszközei. Nem olyanok, mint a C-mutatók, és nem szimbólumtábla-álnevek. A PHP-ben a változó neve és a tartalma különböző dolgok, így ugyanannak a tartalomnak különböző nevei is lehetnek. A legközelebbi analógia a Unix fájlnevek és fájlok – a változónevek könyvtárbejegyzések, a változó tartalma pedig maguk a fájlok. A PHP hivatkozásai hasonlóak a Unix fájlrendszerek kemény hivatkozásaihoz (hardlink) .
<?php $a = 'szöveg' ; $b =& $a ; nyomtatás $b ; $a = 5 ; nyomtatás $b ; szöveg 5Az Erlang nyelvű hivatkozás egy egyedi azonosító adattípusa, amelyet csak összehasonlítások és mintaillesztés végrehajtására használnak [1] :
send_kv ( N , K , V ) -> Referencia = make_ref (), % referencia létrehozása { szerver , N } ! { put , self (), Reference , K , V }, % send request with reference Receive { reply , Reference , ok } -> ok % response to request after 5000 -> { error , timeout } % or timeout end .Adattípusok | |
---|---|
Értelmezhetetlen | |
Numerikus | |
Szöveg | |
Referencia | |
Összetett | |
absztrakt | |
Egyéb | |
Kapcsolódó témák |