をポインタに私はこの問題に出くわしています:の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
'p'はローカル変数です。 '* p'はそうではありません。 –
@ cnicutar、ここのいい例、ありがとう! –