簡體   English   中英

函數未更改指針的值

[英]Function is not changing the value of pointer

我認為代碼是不言自明的:

MyClass* pointer = NULL;
changePointer( pointer );
if (pointer == NULL) 
{
   // it's entering here :(
}



    void changePointer( MyClass* p)
    {
        MyClass* temp = NULL;
        for (int i = 0; i < myContainer.size(); ++i) 
        {
            p = &(myContainer[i]);

            if (p == NULL) 
            {
                 // it's not entering here :)
            }
        }
    }

如果要更改調用者函數中指針指向的內容,則希望按引用傳遞指針

void changePointer(MyClass*& p)

您無需更改 調用函數的方式或在函數中使用 p的方式。 現在,如果您在函數內部更改了p的目標,則它也將在原始變量中也被更改

這是您要問的嗎?

指針是通過值而不是通過引用傳遞的,因此無法更改原始變量。 您需要將功能簽名更改為:

void changePointer(MyClass** p)

...並將一個指針傳遞給該指針:

changePointer(&pointer);

您還需要在函數主體中進行一些相應的更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM