-1

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

为什么 pTest 在 main 中的 test 函数后没有指向新的 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;
}
4

2 回答 2

2

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

于 2013-10-29T14:37:13.333 回答
1

您需要通过引用传递 pTest:void test(int*& pTest)如果您希望在pTest此函数范围之外更改值。

void test(int*& pTest)
{
    int *p = new int(2);
    pTest = p;
    std::cout << "pTest : " << *pTest << std::endl;
    return;
}
于 2013-10-29T14:34:15.413 回答