void func(char* pp)
{
char* temp=(char*)malloc(100);
memset(temp,0,100);
strcpy(temp,"hello,world");
pp=temp;
}
void test()
{
char* p=NULL;
func(p);
printf("%s",p);
}
我们想在在主函数里面调用应该是打印hello,world才对,但是却打印的结果是空指针,问题在这
首先pp,p,temp都是在栈上放着
如图
这里并没有影响到p的变化,所以我们可以用二级指针来改变一级指针
void func(char** pp)
{
char* temp=(char*)malloc(100);
memset(temp,0,100);
strcpy(temp,"hello,world");
*pp=temp;
}
void test()
{
char* p=NULL;
func(&p);
printf("%s",p);
}