память malloc на указатель на указатель
Я сталкивался с этой проблемой при использовании указателя на указатель на символ:
void setmemory(char** p, int num)
{
*p=(char*)malloc(num);
}
void test(void)
{
char* str=NULL;
setmemory(&str,100);
strcpy(str,"hello");
printf(str);
}
int main()
{
test();
return 0;
}
Приведенный выше код верен, но я не могу понять, почему здесь используется указатель на указатель char ** p? Почему просто использовать указатель на символ? поэтому я изменил этот фрагмент ниже и обнаружил, что он не работает, может кто-нибудь сказать мне, почему? Спасибо!
void setmemory(char* p, int num)
{
p=(char*)malloc(num);
}
void test(void)
{
char* str=NULL;
setmemory(str,100);
strcpy(str,"hello");
printf(str);
}
int main()
{
test();
return 0;
}