Reference (programování): Porovnání verzí
Smazaný obsah Přidaný obsah
Bez shrnutí editace |
Formulace, styl |
||
Řádek 1:
Pojem reference nesmí být zaměňován s jinými hodnotami ([[Primární klíč|
Reference jsou široce používány v [[programování]], zejména k efektivnímu přenosu velkého množství dat, nebo pro proměnlivá data jako jsou [[Parametr funkce|argumenty procedur]], nebo [[Sdílená paměť|sdílená data]]. Reference mohou zejména odkazovat na proměnné nebo záznam, který obsahuje odkazy na další data. Tato myšlenka je základem nepřímého adresování a mnoha propojených datových struktur, jako jsou například [[Lineární seznam|lineárními seznamy]].
=== Výhody ===
Reference zvyšují flexibilitu, kde mohou být data uloženy, jak jsou
Mechanismus reference (pokud se slyší v implementaci), je ve většině základních moderních programovacích jazyků společná, a dokonce i některé jazyky, které nepodporují přímé použití referencí tak pro ně mají nějaké vnitřní nebo implicitní použití. Například, referenční volání konvence může být prováděno buď explicitně, nebo implicitně použitím referencí.
=== Příklady ===
Ukazatelé jsou vzhledem k přímému vztahu se základním hardwarem efektivním a jedním z nejmocnějších typů odkazů vůbec. Nicméně, díky tomuto přímému vztahu, ukazatelé vyžadují od programátora podrobné pochopení architektury dané paměti, protože ukazatele ukládají adresy místa uložení namísto přímé hodnoty. Tím může nevhodné používání ukazatelů snadno vést k nepředvídatelnému chování samotného programu. [[Smart pointer|
File handles, nebo handles jsou typy odkazu používané k abstraktnímu obsahu souboru. To obvykle představuje jednak samotný soubor (při žádosti zamknutí souboru), tak i specifické postavení v rámci obsahu souboru (při čtení souboru).
Při [[Distribuovaný výpočet|Distribuovaném výpočtu]] (rozdělení na více menších, nenáročných úloh) může odkaz obsahovat více než adresu nebo identifikátor, ale může také zahrnovat specifikace síťových protokolů používané k vyhledávání a přístupu k odkazovaným objektům. Způsob, jakým je informace zakódována. Například Web [[Services Description Language|WSDL]] (popis vzdálené webové služby), může být považována jako forma reference, protože obsahuje kompletní specifikace, jak najít a jak sem připojit na konkrétní [[Webová služba|webové služby]]. Reference na pohybující se distribuované objekty ([[
Příklad volaní pomocí reference v [[E (programming language)|E]]:
def modify(var p, &q) {▼
p := 27 # předána hodnota - změněn pouze lokální parametr změněn▼
q := 27 # předáván odkazem - proměnná používá ve volání je upravena▼
}▼
<source lang=e>
? var a := 1▼
# value: 1▼
# value: 2▼
? modify(a,&b)▼
? a▼
? b▼
# value: 27▼
# value: 1
</source>
▲Příklad, který simuluje volaní referenci v [[C (programovací jazyk)|C]]:
<source lang="c">
void Modify(int p, int * q, int * o)
{
p = 27; // předány hodnotou - změněn pouze lokální parametr
*q = 27; //
*o = 27; //
}
int main()
|