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

标签 c++ function pointers reference scope

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

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);

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

最佳答案

没有。

在这种情况下,

parameter 将获得 pointer 值的拷贝。所以它是一个新的变量。您对其所做的任何更改仅在函数范围内可见。 指针保持不变。

你必须通过引用传递指针

void load(type *& parameter)
                ^
{

关于c++ - 我可以修改作为参数传递的指针的目标吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16276176/

相关文章:

c++ - "Proper"在C++中使用多重继承

c++ - 如何将指向 char 的指针转换为指向 int 的指针

c++ - 如何在 Google Mock 中模拟返回类型为 unique_ptr 的方法?

C : Splint pointers related warnings. 它们是什么意思?

c++ - 将字符串转换为指针

c++ - 可视化源

c - 函数返回值定义为常量

javascript - 我只需要使用 onload 函数显示一次 jquery 弹出窗口

c - 函数调用的段错误

c++ - 带指针的数组分区