这可能很傻,但我在这里疯了......
为什么pTest在main中的测试函数之后没有指向新的int?它会导致seg故障。我怎么能这样做。
在我的实际代码中,我需要传递指针并动态创建对象,因为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;
}
答案 0 :(得分:2)
如果要改变作为参数传递的值,则必须提供指向它的指针。这意味着如果要更改给定int的值,则传递int *。在你的情况下,你想改变int *,所以你需要将它作为int **传递。
答案 1 :(得分:1)
如果您希望在此函数范围之外更改void test(int*& pTest)
值,则需要通过引用传递pTest:pTest
。
void test(int*& pTest)
{
int *p = new int(2);
pTest = p;
std::cout << "pTest : " << *pTest << std::endl;
return;
}