Met C kunt u een file van verwijzingen creëren die allemaal op dezelfde geheugenlocatie zijn gericht. Dit is geen bug. Het is een functie. U kunt zoveel pointers declareren als u wilt en ze allemaal naar exact dezelfde variabele laten verwijzen.

Overweeg dit scenario. Je hebt een geheel getal i. Je hebt ook drie pointers: p, q en r. Je stelt p in om naar i te wijzen. Vervolgens stelt u q zo in dat deze naar i verwijst. Ten slotte stelt u r in om te wijzen naar waar p naar wijst.

In dit blok verwijst r naar hetzelfde wat p doet. Dat is ‘ik’. De toewijzingsoperator kopieert het adres van de rechterkant naar de linkerkant. Het kopieert de waarde niet. Het kopieert de locatie.

Na uitvoering heeft i vier namen. ‘ik’ zelf. *p. *q. En *r.

Er is geen limiet aan het aantal pointers dat één adres kan bevatten. Je kunt ze ketenen. Je kunt ze kopiëren. Je kunt ze allemaal tegelijk aanwijzen.

Waarom doet dit er toe? Het is belangrijk omdat het de manier verandert waarop u over het geheugen denkt. Een aanwijzer is slechts een label voor een locatie. Als meerdere labels naar dezelfde plek wijzen, zien ze allemaal dezelfde gegevens. Wijzig de gegevens via *p. *q ziet het ook.

Deze flexibiliteit is krachtig. Het is ook gevaarlijk. Eén typefout in een aanwijzertoewijzing en u overschrijft gegevens die u niet wilde aanraken. Maar begrijp voor nu gewoon dat aanwijzingen flexibel zijn. Ze bezitten geen geheugen. Ze wijzen er alleen maar naar. En meerdere verwijzingen kunnen zonder ruzie naar dezelfde plaats wijzen.