首页 > 后端开发 > C++ > 为什么我的指针在传递给函数后没有改变?

为什么我的指针在传递给函数后没有改变?

Patricia Arquette
发布: 2024-12-26 12:23:10
原创
1048 人浏览过

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

理解问题:未修改的指针传递

在此代码片段中,clickOnBubble 函数接收指向 Bubble 对象 (targetBubble) 的指针,并气泡指针(气泡)向量。问题是,函数执行后,传递给函数的 targetBubble 指针保持不变。我们期望该函数应将 targetBubble 指针更改为指向 bubbles 向量中的特定 Bubble,但这并未发生。

传递指针的副本

出现此行为的原因是您传递的是 targetBubble 指针的副本,而不是引用。当您传递指针的副本时,函数内对指针所做的任何更改都不会反映在函数外的原始指针中。

解决方案:使用指针引用或指向指针的指针

为了确保函数外部的targetBubble指针被改变,需要传递指针的引用或者使用指针指针。

使用指针引用:

void clickOnBubble(sf::Vector2i &mousePos, std::vector<Bubble *>& bubbles, Bubble *&targetBubble) {
    targetBubble = bubbles[i]; // Modified pointer here is reflected outside function
}
登录后复制

使用指针到指针:

void clickOnBubble(sf::Vector2i &mousePos, std::vector<Bubble *>& bubbles, Bubble **targetBubble) {
    *targetBubble = bubbles[i]; // Modified pointer here is reflected outside function
}
登录后复制

中这两种情况,函数内修改后的targetBubble指针都会反映在外面原来的targetBubble指针中函数。

以上是为什么我的指针在传递给函数后没有改变?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板