首页 > 后端开发 > C++ > 为什么修改 C 函数中的指针不会改变原始指针?

为什么修改 C 函数中的指针不会改变原始指针?

Linda Hamilton
发布: 2024-12-27 07:17:09
原创
269 人浏览过

Why Doesn't Modifying a Pointer in a C   Function Change the Original Pointer?

C 中函数不会改变传递的指针

在 C 中,当尝试修改传递给函数的指针时会出现混乱。问题在于指针的固有性质。当函数接收指针作为参数时,它实际上是在该指针的副本上进行操作,而不是原始指针本身。

考虑示例函数 clickOnBubble:

bool clickOnBubble(sf::Vector2i &mousePos, std::vector<Bubble *>& bubbles, Bubble *targetBubble) {
    // ... your code
}
登录后复制

当您传递一个指针作为参数,该函数在其本地范围内创建该指针的新副本。对指针本地副本所做的任何修改都不会影响函数外部的原始指针。在上面的场景中,代码尝试将 targetBubble 分配给函数内 bubbles 向量的元素,但此分配仅修改 targetBubble 的本地副本。

要有效修改函数外部的指针,可以使用指向指针的指针或对指针的引用。这允许函数访问和修改原始指针。

使用指向指针的指针:

void foo(int **ptr) {
    *ptr = new int[10]; // Assign memory to the pointed-to location
}
登录后复制

在此示例中,函数 foo 接受一个指针以指针作为其参数。现在它可以修改指针本身,为其分配一个新值。

使用对指针的引用:

void bar(int *&ptr) {
    ptr = new int[10]; // Assign memory to the pointed-to location
}
登录后复制

这里,函数栏接受一个对指针的引用。它可以直接访问和修改原始指针。

以上是为什么修改 C 函数中的指针不会改变原始指针?的详细内容。更多信息请关注PHP中文网其他相关文章!

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