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
?这能行吗(如果不行:为什么)?
传递对指针的引用:
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
的功能之内。但是,您将看到函数返回后a
inmain
不会更改为 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)
归档时间: |
|
查看次数: |
3257 次 |
最近记录: |