Déréférencement de pointeur dans Go expliqué
Pour comprendre le déréférencement de pointeur, nous examinerons l'exemple de code Go que vous avez fourni. Dans l'exemple d'origine, plusieurs instances de la structure Vertex sont créées, dont *q qui est un pointeur vers un Vertex. Dans votre version modifiée, vous attribuez la valeur déréférencée de *q à t. Cependant, la principale différence est que dans votre modification, vous remplacez q.X par 4, ce qui met à jour l'instance d'origine pointée par q.
Le pointeur *q pointe vers la même instance de structure sous-jacente que q. Ainsi, en modifiant la valeur de q.X, vous modifiez la structure d'origine et ne créez pas de copie. Par conséquent, lorsque vous imprimez t après avoir modifié q.X, vous remarquerez que t ne reflète pas le changement car t stocke une copie de la structure d'origine et ne pointe pas vers le même emplacement que q.
À observer ces modifications via un pointeur, vous devez directement attribuer q à t au lieu de le déréférencer. Dans l'exemple C/C que vous avez mentionné, le comportement est similaire. Le déréférencement d'un pointeur (par exemple, *q) crée une copie de la valeur, tandis que l'attribution directe du pointeur (par exemple, t = q) vous permet de modifier la valeur d'origine via le pointeur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!