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 ¶meter)
{
parameter = type("second");
}
type variable("first");
load(&variable);
这很容易,但我试着用指针做同样的事情。不
在这种情况下,参数将获取指针值的副本。因此,这是一个新的变量。您对它所做的任何更改仅在函数范围内可见。指针保持不变
必须通过引用传递指针
void load(type *& parameter)
^
{
没有
在这种情况下,参数将获取指针值的副本。因此,这是一个新的变量。您对它所做的任何更改仅在函数范围内可见。指针保持不变
必须通过引用传递指针
void load(type *& parameter)
^
{
您需要通过引用传递指针:
void load(type *¶meter);
参见示例您需要通过引用传递指针:
void load(type *¶meter);
参见示例或者,您可以使用双指针
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即可。这样,您可以多次执行安全删除。