一个程序,多级指针跨函数使用问题。

我想通过多级指针改变某个参数的值,代码如下:

include

void f(int ** q)
{
int ai = 100;
*q = &i;
}

void g(void)
{
int i = 10;
int * p = &i;

f(&p);
printf("i = %d\n",i);
}

int main(void)
{
g();

return 0;
}
这样写为什么还是改写不了i的值啊?;

你改的是p的值,即p指向的地址,也就是f()之后p没有指向i了。所以如果输出*p会看到“i = 100”。