Maison > développement back-end > C++ > Pourquoi mon pointeur ne change-t-il pas après l'avoir passé à une fonction ?

Pourquoi mon pointeur ne change-t-il pas après l'avoir passé à une fonction ?

Patricia Arquette
Libérer: 2024-12-26 12:23:10
original
1053 Les gens l'ont consulté

Why Doesn't My Pointer Change After Passing It to a Function?

Comprendre le problème : passage de pointeur non modifié

Dans cet extrait de code, la fonction clickOnBubble reçoit un pointeur vers un objet Bubble (targetBubble) et un vecteur de pointeurs de bulles (bulles). Le problème est qu'une fois la fonction exécutée, le pointeur targetBubble transmis à la fonction reste inchangé. On s'attend à ce que la fonction modifie le pointeur targetBubble pour pointer vers une bulle spécifique dans le vecteur de bulles, mais cela ne se produit pas.

Passer une copie du pointeur

La raison de ce comportement est que vous transmettez une copie du pointeur targetBubble, pas une référence. Lorsque vous transmettez une copie d'un pointeur, toute modification apportée au pointeur dans la fonction ne sera pas reflétée dans le pointeur d'origine en dehors de la fonction.

Solution : Utiliser une référence de pointeur ou un pointeur vers un pointeur

Pour vous assurer que le pointeur targetBubble en dehors de la fonction est modifié, vous devez passer une référence au pointeur ou utiliser un pointeur vers pointeur.

Utilisation d'une référence de pointeur :

void clickOnBubble(sf::Vector2i &mousePos, std::vector<Bubble *>& bubbles, Bubble *&targetBubble) {
    targetBubble = bubbles[i]; // Modified pointer here is reflected outside function
}
Copier après la connexion

Utilisation d'un pointeur vers pointeur :

void clickOnBubble(sf::Vector2i &mousePos, std::vector<Bubble *>& bubbles, Bubble **targetBubble) {
    *targetBubble = bubbles[i]; // Modified pointer here is reflected outside function
}
Copier après la connexion

Dans dans les deux cas, le pointeur targetBubble modifié dans la fonction sera reflété dans le pointeur targetBubble d'origine en dehors de la fonction. fonction.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal