函数行为:在 C 中传递指针
在 C 中,将指针传递给函数允许修改调用范围中的原始变量。但是,在处理指针时,可能会出现某些细微差别。
问题:
考虑一个修改传递指针的函数,如以下示例所示:
bool clickOnBubble(sf::Vector2i &mousePos, std::vector<Bubble *> bubbles, Bubble *targetBubble) { targetBubble = bubbles[i]; }
尽管修改了函数内的“targetBubble”指针,但更改不会反映在函数之外
原因和解决方案:
问题源于传递指针的副本而不是对其的引用。要纠正此问题,您可以利用以下技术:
指针到指针:
将指针传递给指针,这允许您修改原始值指针:
void foo(int **ptr) //pointer to pointer { *ptr = new int[10]; //just for example, use RAII in a real world }
参考指针:
传递对指针的引用,这会直接修改原始指针:
void bar(int *&ptr) //reference to pointer (a bit confusing look) { ptr = new int[10]; }
通过实现任一方法,都可以有效地修改指针中的指针调用作用域,确保函数内所做的更改反映在外部。
以上是如何修改传递给 C 函数的指针并在调用范围中反映这些更改?的详细内容。更多信息请关注PHP中文网其他相关文章!