pamięć malloc do wskaźnika na wskaźnik
Natknąłem się na ten problem podczas używania wskaźnika do wskaźnika na znak:
<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>
Powyższy kod jest poprawny, ale nie mogę zrozumieć, dlaczego tutaj za pomocą wskaźnika na znak ** wskaźnika? Dlaczego zamiast tego używasz wskaźnika do znaku? więc zmieniłem ten fragment na poniższy i stwierdziłem, że nie działa, czy ktoś może mi powiedzieć dlaczego? dzięki!
<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>