C vous permet de créer un embouteillage de pointeurs visant tous le même emplacement mémoire. Ce n’est pas un bug. C’est une fonctionnalité. Vous pouvez déclarer autant de pointeurs que vous le souhaitez et les faire référencer tous exactement à la même variable.
Considérez ce scénario. Vous avez un « i » entier. Vous disposez également de trois pointeurs : p, q et r. Vous définissez p pour qu’il pointe vers i. Ensuite, vous définissez q pour qu’il pointe vers i. Enfin, vous définissez r pour qu’il pointe vers l’endroit où p pointe.
Dans ce bloc, « r » pointe vers la même chose que « p ». Qui est « je ». L’opérateur d’affectation copie l’adresse du côté droit vers le côté gauche. Il ne copie pas la valeur. Il copie l’emplacement.
Après exécution, « i » a quatre noms. « je » lui-même. *p. *q. Et *r.
Il n’y a pas de limite au nombre de pointeurs pouvant contenir une seule adresse. Vous pouvez les enchaîner. Vous pouvez les copier. Vous pouvez les pointer tous en même temps.
Pourquoi est-ce important ? C’est important parce que cela change votre façon de penser la mémoire. Un pointeur n’est qu’une étiquette pour un emplacement. Si plusieurs étiquettes pointent vers le même endroit, elles voient toutes les mêmes données. Modifiez les données via *p. *q le voit aussi.
Cette flexibilité est puissante. C’est aussi dangereux. Une faute de frappe dans l’affectation d’un pointeur et vous écrasez des données que vous n’aviez pas l’intention de toucher. Mais pour l’instant, comprenez simplement que les pointeurs sont flexibles. Ils ne possèdent pas de mémoire. Ils le soulignent simplement. Et plusieurs pointeurs peuvent pointer vers le même endroit sans se disputer.



















