c - 第一种情况和第二种情况有什么区别?

标签 c

第一种情况和第二种情况有什么区别,为什么第一种情况按预期工作,而第二种情况却没有? (在第二种情况下,我试图引入一个指针,该指针将指针取消引用到指针,以避免键入额外的星号)。

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/

相关文章:

java - 校验和问题 CRC16CCITT

c - 如何从 void 指针引用和取消引用不同的数据类型?

更改Linux 3.5.0内核任务调度程序

c - 如何通过指针访问全局定义的 typedef 结构?

strcpy 中的 char * 和 char[]

c - 如何通过调用 exec 函数族的成员来获取程序运行的返回值?

子进程和父进程 ID

c - 。 C 编程 - 通过套接字发送信号?

c - 如何控制 double 变量小数点字符后出现的位数?

c - 指向指针的简单指针