我认为代码不言自明:
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 :)
}
}
}
答案 0 :(得分:3)
如果要更改指针在调用函数中指向的内容,您希望通过引用传递指针
void changePointer(MyClass*& p)
您无需更改 调用该功能的方式,或如何 p
使用该功能。现在,如果您在函数内部更改p
的目标,那么它也会在原始变量中更改。
这是你要问的吗?
答案 1 :(得分:3)
指针正在按值传递,而不是通过引用传递,因此无法更改原始变量。您需要将函数签名更改为:
void changePointer(MyClass** p)
...并传递一个指向指针的指针:
changePointer(&pointer);
您还需要在函数体中进行一些相应的更改。