第一种情况和第二种情况有什么区别,为什么第一种情况按预期工作,而第二种情况却没有? (在第二种情况下,我试图引入一个指针,该指针将指针取消引用到指针,以避免键入额外的星号)。
int _tmain(int argc, _TCHAR* argv[])
{
int* test = NULL;
foo(&test);
}
案例一:
void foo(int** ppPar)
{
*ppPar = (int*)malloc(sizeof(int));
**ppPar = 7;
}
案例二:
void foo(int** ppPar)
{
int* pPar = *ppPar;
pPar = (int*)malloc(sizeof(int));
*pPar = 6;
}
最佳答案
*ppPar = ...
这重新分配了 main 中的指针 test
;
**ppPar = 7
这会改变 main 中 test
指向的值。
int* pPar = *ppPar;
pPar =
这会生成 main 中指针 test
的副本,然后重新分配副本。 (所以现在根本没有连接到 test
。
*pPar = 6;
这改变了 pPar
指向的值,它不再与 test
关联。
关于c - 第一种情况和第二种情况有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25188002/