首頁 >後端開發 >C++ >為什麼我的指標在傳遞給函數後沒有改變?

為什麼我的指標在傳遞給函數後沒有改變?

Patricia Arquette
Patricia Arquette原創
2024-12-26 12:23:101021瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn