这是参考这个问题:为什么需要指向指针的指针来在函数中分配内存
问题的答案解释了为什么这不起作用:
void three(int * p)
{
p = (int *) malloc(sizeof(int));
*p=3;
}
void main()
{
int *p = 0;
three(p);
printf("%d",*p);
}
...但这有效:
void three(int ** p)
{
*p = (int *) malloc(sizeof(int));
**p=3;
}
void main()
{
int *p = 0;
three(&p);
printf("%d",*p);
}
我的问题是,这也可以通过从函数返回一个指针来工作。这是为什么?
int* three(int * p)
{
p = (int *) malloc(sizeof(int));
*p=3;
return p;
}
void main()
{
int *p = 0;
p=three(p);
printf("%d",*p);
}