首页 > 解决方案 > 这个双指针取消引用在这里是如何工作的

问题描述

我有这个片段:

func(int **t)
{
        int q = 40;
        *t = &q;
}

int main()
{
        int a = 20;
        int *p = &a;

        func(&p);
        printf("%d\n", *p);
}

该程序输出 40 ,因为在 *t = &q 之后,指针 p 指向 q 的地址而不是 a。

但是一旦我们从 func(int **t) 返回,q 不再存在,但 *p 仍然给出 40,怎么办?

标签: clinux

解决方案


推荐阅读