C má funkci, která mate nováčky, ale stále umožňuje fungování složitých systémů. Na stejnou adresu paměti můžete ukázat desítky ukazatelů.
Zvažte jednoduchou celočíselnou hodnotu i. Můžete deklarovat tři ukazatele – p, q a r – a všechny je k tomu svázat.
Není to magie. Jedná se pouze o zkopírování adresy. Když napíšete r = p, kompilátor zkopíruje adresu uloženou v p do r. Totéž se stane s q.
Nyní má „i“ čtyři jména. Toto je ‘já’. Toto je ‘p’. Toto je „ q“. Toto je „*r“.
Na to není žádný pevný limit. Můžete mít stovky ukazatelů ukazujících na stejnou část paměti RAM. Každá z nich je samostatná proměnná ve vašem kódu, ale všechny ukazují na stejné místo v paměti.
Proto změny provedené prostřednictvím jednoho ukazatele ovlivňují všechny ostatní. Měníš *p? Hodnota na této adrese se také změní pro q a r. Jedná se o přímý přístup ke stejným datům.
Proč je to důležité? Protože vám umožňuje vytvářet aliasy. Váš program může prohlížet stejná data různými čočkami. Jeden ukazatel s nimi může zacházet jako se strukturou (struct) a další jako s bajtovým polem. Údaje se nemění. Jejich výklad se mění.
Tato flexibilita je mocná. Ale tady jsou chyby. Pokud ztratíte kontrolu nad tím, kam jednotlivé ukazatele ukazují, mohli byste omylem přepsat data, která jste nechtěli změnit. Ale zatím si pamatujte: ukazatele jsou jen adresy. A adresy lze oddělit.




















