将新值传递并分配给指针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