Reference v programování je objekt, který ukazuje na určitá data, ale neukládá je. Získání objektu odkazem se nazývá dereferencování .
Odkaz není ukazatel , ale je to prostě jiný název objektu. Hlavní rozdíl mezi odkazem a ukazateli je v tom, že ukazatel je celé číslo, a proto jsou pro něj dostupné operace s celými čísly, zatímco pro referenci jsou k dispozici pouze operace kopírování a dereference.
V programovacích jazycích může být odkaz implementován jako proměnná obsahující adresu místa v paměti . Některé jazyky na vysoké úrovni mají také schopnost používat odkazy na objekty při předávání objektů do a z podprogramu.
Reference v C++ musí být spojeny s nějakým objektem. V C++ tedy neexistují žádné "nulové odkazy" (nepřidružené k žádnému objektu). Dereferencování odkazů v C++ nevyžaduje speciální operátor. V C++ jsou tedy odkazy formou přímého předání adresy do zásobníku, čímž se obejde kopírování a ukazatele. Při kompilaci jsou všechny odkazy na objekt a jeho název nahrazeny jedním číslem tohoto objektu.
V následujícím příkladu je parametr x předán hodnotou a výsledek je předán odkazem. Výsledek funkce se umístí do výsledku:
#include <iostream> pomocí jmenného prostoru std ; // bez tohoto záznamu bychom museli k cout a endl připojit "std::". prázdný čtverec ( int x , int a výsledek ) { vysledek = x * x ; } int main () { int y = 0 ; //Inicializuje čtverec ( 3 , y ); cout << "y=" << y << endl ; //y=9 návrat 0 ; }Java nemá koncept ukazatele a C# místo něj používá koncept odkazu. Dereferencování referencí a převzetí adres objektů k přiřazení k referencím nevyžaduje speciální operátor.
Reference v PHP jsou prostředkem pro přístup k obsahu jedné proměnné pod různými názvy. Nejsou jako ukazatele C a nejsou aliasy tabulky symbolů. V PHP jsou název proměnné a její obsah různé věci, takže stejný obsah může mít různá jména. Nejbližší analogií jsou unixové názvy souborů a souborů – názvy proměnných jsou položky adresáře a obsah proměnných jsou samotné soubory. Odkazy v PHP jsou analogické s pevnými odkazy (hardlinks) v souborových systémech Unix.
<?php $a = 'text' ; $b =& $a ; tisk $b ; $a = 5 ; tisk $b ; text 5Reference v Erlangu je datový typ pro jedinečný identifikátor, který se používá pouze k provádění porovnávání a porovnávání vzorů [1] :
send_kv ( N , K , V ) -> Reference = make_ref (), % vytvořit referenci { server , N } ! { put , self (), Reference , K , V }, % odeslat požadavek včetně reference přijmout { odpovědět , Reference , ok } -> ok % odpověď na požadavek po 5000 -> { error , timeout } % or timeout end .Typy dat | |
---|---|
Neinterpretovatelné | |
Numerický | |
Text | |
Odkaz | |
Kompozitní | |
abstraktní | |
jiný | |
související témata |