当写一个函数时,有时候会发现函数的参数使用一个一级指针,而有时候却发现函数的参数是一个二级指针
简单来说,如果只是需要访问一级指针指向的内容而不对一级指针指向的内容有所修改,那么就传一级指针就可以。而如果不仅要访问一级指针指向的内容,而且还要修改一级指针指向的内容,那么函数参数就应该是二级指针,一级指针只是接受了传参时的拷贝值,不会修改本身。
void func(char* pp)
{
char* temp=(char*)malloc(100);
memset(temp,0,100);
strcpy(temp,"hello");
pp=temp;
}
void test()
{
char* p=NULL;
func(p);
printf("%s",p);
}
在main函数中调用test这个函数的时候,发现打印的结果是NULL,就是因为我们想要把p指向的内容修改为hello,发现做不到,所以得用二级指针来接受,修改内容
void func(char** pp)
{
char* temp=(char*)malloc(100);
memset(temp,0,100);
strcpy(temp,"hello");
*pp=temp;
}
void test()
{
char* p=NULL;
func(&p);
printf("%s",p);
}