1

函数可以更改作为参数传递的指针的目标,以使效果保持在函数之外吗?

void load(type *parameter)
{
    delete parameter;
    parameter = new type("second");
}

type *pointer = new type("first");
load(pointer);

在这个最小的例子中,会pointer指向第二个分配对象吗?如果没有,我怎么能得到这种行为?

更新:为了澄清我的意图,如果参数是普通类型而不是指针,这是我将使用的代码。在这种情况下,我会简单地使用引用。

void load(type &parameter)
{
    parameter = type("second");
}

type variable("first");
load(&variable);

这很容易,但我尝试用指针做同样的事情。

4

3 回答 3

10

不。

parameterpointer在这种情况下将获得 的值的副本。所以它是一个新变量。您对其所做的任何更改仅在函数范围内可见。pointer保持不变。

你必须the pointer通过引用

void load(type *& parameter)
                ^
{
于 2013-04-29T10:18:54.807 回答
3

您需要通过引用传递指针:

void load(type *&parameter);

参见例如http://www.cprogramming.com/tutorial/references.html

于 2013-04-29T10:19:06.847 回答
0

或者,您可以使用double指针。

void load(type** parameter)
{
    delete *parameter;
    *parameter = new type("second");
}

type *pointer = new type("first");
load(&pointer);

但是由于您使用的是 cpp ,因此您可以使用references

于 2013-04-29T10:29:40.300 回答