如何修改作为函数参数的指针?
下来看一段代码:
void f(int* p)
{
p = (int*)1;
}
void main()
{
int* p = NULL;
f(p);
}
{
p = (int*)1;
}
void main()
{
int* p = NULL;
f(p);
}
p的值仍然为NULL。
将f()改为:
void f(int** p)
{
*p = (int*)1;
}
{
*p = (int*)1;
}
调用时f(&p)即可将p的值改为0x00000001。
或者:
void f(int*& p)
{
p = (int*)1;
}
{
p = (int*)1;
}
f(p)。
如果只能通过g()调用f():
void f(int** p)
{
*p = (int*)1;
}
void g(int* p)
{
f( (int**)p );
}
{
*p = (int*)1;
}
void g(int* p)
{
f( (int**)p );
}
那么g(&p)即可。