C++ 我可以修改作为参数传递的指针的目标吗?

C++ 我可以修改作为参数传递的指针的目标吗?,c++,function,pointers,reference,scope,C++,Function,Pointers,Reference,Scope,函数能否更改作为参数传递的指针的目标,从而使效果保持在函数之外 void load(type *parameter) { delete parameter; parameter = new type("second"); } type *pointer = new type("first"); load(pointer); 在这个最小的示例中,指针会指向第二个分配对象吗?如果没有,我怎么会有这种行为 更新:为了澄清我的意图,如果参数是普通类型而不是指针,我将使用以下代码。在这

函数能否更改作为参数传递的指针的目标,从而使效果保持在函数之外

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

type *pointer = new type("first");
load(pointer);
在这个最小的示例中,指针会指向第二个分配对象吗?如果没有,我怎么会有这种行为

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

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

type variable("first");
load(&variable);
这很容易,但我试着用指针做同样的事情。

在这种情况下,参数将获取指针值的副本。因此,这是一个新的变量。您对它所做的任何更改仅在函数范围内可见。指针保持不变

必须通过引用传递指针

void load(type *& parameter)
                ^
{
没有

在这种情况下,参数将获取指针值的副本。因此,这是一个新的变量。您对它所做的任何更改仅在函数范围内可见。指针保持不变

必须通过引用传递指针

void load(type *& parameter)
                ^
{

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

void load(type *&parameter);

参见示例

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

void load(type *&parameter);

参见示例

或者,您可以使用双指针

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

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

但由于您使用的是cpp,因此可以使用引用,也可以使用双指针

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

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

但是,因为您使用的是cpp,所以可以使用参考资料

我不知道这个概念。它按预期工作。谢谢。@danijar很高兴我能帮上忙。只有delete参数;部分不起作用。我导致访问冲突。我能在分配新对象之前释放内存吗?忘记我说过的话。我只是通过两个嵌套函数传递指针引用,虽然我可以在第一个函数中删除指针引用,然后传递给第二个函数。换句话说,我试图通过一个死指针。但如果我只在新分配之前删除,一切都正常。@danijar Ya只需记住在删除后将其设置为NULL即可。这样你可以多次安全删除。我不知道这个概念。它按预期工作。谢谢。@danijar很高兴我能帮上忙。只有delete参数;部分不起作用。我导致访问冲突。我能在分配新对象之前释放内存吗?忘记我说过的话。我只是通过两个嵌套函数传递指针引用,虽然我可以在第一个函数中删除指针引用,然后传递给第二个函数。换句话说,我试图通过一个死指针。但如果我只在新分配之前删除,一切都正常。@danijar Ya只需记住在删除后将其设置为NULL即可。这样,您可以多次执行安全删除。