V C můžete vytvořit “zásek” ukazatelů ukazujících na stejné místo v paměti. To není chyba. To je vlastnost jazyka. Můžete deklarovat tolik ukazatelů, kolik chcete, a všechny budou odkazovat na stejnou proměnnou.

Zvažte tento scénář. Máte celočíselnou proměnnou „i“. Máte také tři ukazatele: p, q a r. Nastavíte p tak, aby ukazovalo na i. Potom nastavíte q tak, aby ukazovalo na i. Nakonec nastavíte r tak, aby ukazovalo p.

V tomto fragmentu kódu r ukazuje na stejnou věc jako p, konkrétně i. Operátor přiřazení zkopíruje adresu z pravé strany na levou. Nekopíruje hodnotu, ale adresu.

Po provedení kódu má proměnná i čtyři názvy. Samotné „i“, „p“, „ q“ a „*r“.

Počet ukazatelů, které mohou uložit stejnou adresu, není omezen. Lze je vzájemně přenášet v řetězci, kopírovat nebo současně směrovat do jedné oblasti.

Proč je to důležité? To je důležité, protože to mění způsob, jakým přemýšlíte o paměti. Ukazatel je jednoduše označení adresy. Pokud více štítků ukazuje na stejné místo, všechny vidí stejná data. Změňte data pomocí *p*q také uvidí tyto změny.

Tato flexibilita je mocná. Je také nebezpečná. Jeden překlep v přiřazení ukazatele a přepíšete data, která jste nechtěli změnit. Ale prozatím pochopte, že ukazatele jsou flexibilní. Nevlastní paměť, pouze na ni ukazují. A více ukazatelů může ukazovat na stejné místo bez konfliktů.