函数是否可以更改作为参数传递的指针的目标,以使效果保持在函数外部?
void load(type *parameter)
{
delete parameter;
parameter = new type("second");
}
type *pointer = new type("first");
load(pointer);
在这个最小的例子中,pointer
会指向第二个分配对象吗?如果没有,我怎么能得到这种行为?
更新:为了澄清我的意图,这里是我将使用的代码,如果参数将是普通类型而不是指针。在这种情况下,我只会使用引用。
void load(type ¶meter)
{
parameter = type("second");
}
type variable("first");
load(&variable);
这很简单,但我尝试用指针做同样的事情。
答案 0 :(得分:9)
没有
在这种情况下, parameter
会获得pointer
值的副本。所以这是一个新的变量。您对其所做的任何更改仅在功能范围内可见。 pointer
保持不变。
您必须通过引用传递the pointer
void load(type *& parameter)
^
{
答案 1 :(得分:3)
答案 2 :(得分:0)
或者,您可以使用double
指针。
void load(type** parameter)
{
delete *parameter;
*parameter = new type("second");
}
type *pointer = new type("first");
load(&pointer);
但是,由于您使用的是cpp,因此可以使用references