函数不会更改指针的值

Function is not changing the value of pointer

本文关键字:指针 函数      更新时间:2023-10-16

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

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)

。并将指针传递给指针:

changePointer(&pointer);

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

如果要

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

void changePointer(MyClass*& p)

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

这是你要问的吗?