我想通过多级指针改变某个参数的值,代码如下:
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的值啊?;
我想通过多级指针改变某个参数的值,代码如下:
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”。