我也碰到这个问题,使用指针时,指针为char传来:的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在这里?为什么只用一个指向char的指针呢?所以我把这段代码改成了下面,发现它不起作用,谁能告诉我为什么?谢谢!
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;
}
http://c-faq.com/ptrs/passptrinit.html – cnicutar 2012-04-18 13:39:48
'p'是一个局部变量。 '* p'不是。 – 2012-04-18 13:44:08
@ cnicutar,这里很好的例子,谢谢! – 2012-04-18 14:23:43