其他分享
首页 > 其他分享> > 将新值传递并分配给指针C

将新值传递并分配给指针C

作者:互联网

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

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;
}

这是可能的,还是intPtr从foo返回后将不维护新的赋值?这行得通吗(如果不行,为什么)?

解决方法:

传递对指针的引用:

无效foo(int *& fooPtr,int& newInt)

您的方法不起作用的原因是您要传递指针按值.传递值会在函数内创建一个临时项,因此一旦函数返回,对该临时项的任何更改都会消失.

没什么不同:

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

int main()
{
   int a = 0;
   foo( a );
   // a is still 0, not 10
}

a通过值传递,因此foo()函数在函数内将参数更改为10.但是,您会看到函数返回后,in main不会更改为10.

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

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

int main()
{
   int a = 0;
   foo( a );
   // a is now 10
}

标签:c,pointers,reference,function-calls
来源: https://codeday.me/bug/20191012/1899324.html