更改函数中指针的目标(指向动态创建的对象)

Changing target of pointer in function (to a dynamically created object)

本文关键字:动态 创建 对象 目标 函数 指针      更新时间:2023-10-16

这可能很愚蠢,但我在这里快疯了..

为什么 pTest 在 main 中测试函数后没有指向新的 int ?它会导致赛格故障。我该怎么做。

在我的真实代码中,我需要传递一个指针并动态创建对象,因为 pTest 是虚拟类的子类(从文件中读取,所以我事先不知道)

void test(int* pTest)
{
    int *p = new int(2);
    pTest = p;
    std::cout << "pTest : " << *pTest << std::endl;
    return;
}
int main()
{
  int *pTest = NULL;
  test(pTest);
  std::cout << "pTest : " << *pTest << std::endl;
  return 0;
}

如果你想改变作为参数传递的值,你必须提供指向它的指针。这意味着如果你想改变给定 int 的值,你正在传递 int* 。在您的情况下,您希望改变 int*,以便您需要将其作为 int** 传递。

如果您希望在此

函数范围之外更改pTest值,则需要通过引用传递 pTest:void test(int*& pTest)

void test(int*& pTest)
{
    int *p = new int(2);
    pTest = p;
    std::cout << "pTest : " << *pTest << std::endl;
    return;
}