[英]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.