C vous permet de faire quelque chose qui pourrait paraître compliqué à première vue. Vous pouvez avoir plusieurs pointeurs référençant exactement le même emplacement mémoire. Ce n’est pas un bug. C’est une fonctionnalité.
Considérez cette configuration. Vous déclarez un entier « i ». Ensuite, vous déclarez trois pointeurs : p, q et r.
Regardez ce qui se passe ici. p récupère l’adresse de i. q fait la même chose. r ne se soucie pas directement de i. Il copie simplement l’adresse que « p » détient. Puisque p pointe vers i, r finit par pointer vers i également.
Une fois ces lignes exécutées, vous n’avez plus trois variables distinctes flottantes. Vous avez une variable avec quatre alias.
- ‘je’
*p*q*r
C’est tous la même chose.
Cela se produit parce que l’affectation du pointeur est une copie de valeur de l’adresse. L’adresse de droite se déplace vers la variable de gauche. Aucune copie complète des données n’a lieu. Seul l’emplacement mémoire est transféré.
Il n’y a aucune limite à cela. Vous pouvez enchaîner autant de pointeurs que vous le souhaitez. a = b; c = b; d = c; Cela n’a pas d’importance. Ils pointent tous vers le même endroit dans la RAM.
Il n’y a pas de limite sur le nombre de pointeurs pouvant contenir et donc pointer vers la même adresse.
Pourquoi est-ce important ? Cela signifie que vous pouvez transmettre librement des références. Vous pouvez créer un alias de données pour différentes parties de votre code à utiliser. Vous pouvez créer des structures de données complexes dans lesquelles les nœuds se référencent les uns les autres.
Cela signifie aussi prudence. Remplacez « *p » par « 5 ». Qu’arrive-t-il au « je » ? Cela devient « 5 ». Changer *q ? i change à nouveau. Tous les alias voient la même mise à jour.
C’est du C de base. Mais c’est puissant. Et dangereux si vous perdez la trace de quel pointeur est lequel.







































