将新值传递和分配给指针 C++

Vic*_*ell 2 c++ pointers reference function-calls

我正在传递一个指向函数的指针。我想为函数内部传递的指针分配一个新地址,并且我希望在函数返回后使用该地址。我不确定这是否可行,但我想做:

int main()
{
    int i = 100, j = 200;
    int * intPtr = &i;
    foo(intPtr, j);
    //  I want intPtr to point to j, which contains 200 after returning from foo.
}

void foo( int * fooPtr, int & newInt )
{
    int * newIntPtr = &newInt;
    fooPtr = newIntPtr;
}
Run Code Online (Sandbox Code Playgroud)

这是可能的,还是intPtr从 返回后不会保持新分配foo?这能行吗(如果不行:为什么)?

Pau*_*zie 6

传递对指针的引用:

void foo( int *& fooPtr, int & newInt )

为什么你的方法做的原因不是工作就是要传递指针的值。按值传递会在函数内创建一个临时对象,因此一旦函数返回,对临时对象的任何更改都会消失。

它与此没有什么不同:

void foo(int x)
{
   x = 10;
}

int main()
{
   int a = 0;
   foo( a );
   // a is still 0, not 10
}
Run Code Online (Sandbox Code Playgroud)

a是按值传递,所以foo()函数改变参数10的功能之内。但是,您将看到函数返回后ainmain不会更改为 10。

要更改a,您需要int通过引用传递:

void foo(int& x)
{
   x = 10;
}

int main()
{
   int a = 0;
   foo( a );
   // a is now 10
}
Run Code Online (Sandbox Code Playgroud)