2

我认为代码是不言自明的:

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 :)
            }
        }
    }
4

2 回答 2

3

如果要更改指针在调用者函数中指向的内容,则希望通过引用传递指针

void changePointer(MyClass*& p)

无需更改调用函数的方式或在函数中的使用 p方式。现在如果你改变p函数内部的目标,它也会在原始变量中改变。

这是你要问的吗?

于 2012-12-14T02:47:41.200 回答
3

指针是按值传递的,而不是按引用传递的,因此无法更改原始变量。您需要将函数签名更改为:

void changePointer(MyClass** p)

...并将指针传递给指针:

changePointer(&pointer);

您还需要在函数体中进行一些相应的更改。

于 2012-12-14T02:48:34.227 回答