V C může mít stejné paměťové místo více aliasů. Můžete deklarovat více ukazatelů a nechat je všechny odkazovat na stejnou proměnnou. To není jen vlastnost jazyka, ale zásadní vlastnost, která mění přístup ke správě paměti a přístupu k datům.
Zvažte tento scénář. Potřebujete více odkazů na stejnou celočíselnou proměnnou. Můžete je všechny deklarovat a okamžitě je propojit.
V tomto fragmentu kódu jsou p, q a r všechny ukazatele na celá čísla. Všechny ukazují na „i“. Přiřazení r = p nekopíruje hodnotu i. Zkopíruje adresu uloženou v p. Protože p obsahuje adresu i, r nyní obsahuje také adresu i.
Jedna proměnná, mnoho jmen
Po provedení kódu je v paměti jedna celočíselná proměnná i. K těmto datům však můžete přistupovat čtyřmi způsoby.
i: Název zdrojové proměnné.*p: Hodnota na adrese uložené vp.*q: Hodnota na adrese uložené vq.*r: Hodnota na adrese uložené vr.
Jsou totožné. Změňte „i“. *p se změní. Změňte „*q“. ‘já’ se změním. Data jsou umístěna na jedné adrese. Ukazatele jsou jen štítky.
Neexistuje žádné pevné omezení počtu ukazatelů, které mohou uložit stejnou adresu. Můžete je řetězit donekonečna. Konstrukce a = &i; b = a; c = b; d = c; funguje stejným způsobem. Každé přiřazení zkopíruje hodnotu ukazatele. Nevytváří novou kopii dat.
“Na stejnou adresu může ukazovat libovolný počet ukazatelů.”
Tato schopnost je účinná při předávání odkazů mezi funkcemi nebo strukturami souvisejícími s budovami. Umožňuje vám používat paměť šetrně. Nese to však i rizika. Pokud dereferencujete jeden z těchto ukazatelů, přistupujete ke stejným základním bajtům. Chyba v jednom aliasu ovlivní všechny ostatní. Ale při správném použití je tato funkce standardní praxí v C.



























