память malloc на указатель на указатель
Я сталкивался с этой проблемой при использовании указателя на указатель на символ:
<code>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; } </code>
Приведенный выше код верен, но я не могу понять, почему здесь используется указатель на указатель char ** p? Почему просто использовать указатель на символ? поэтому я изменил этот фрагмент ниже и обнаружил, что он не работает, может кто-нибудь сказать мне, почему? Спасибо!
<code>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; } </code>