void GetMemory(char *p)
{
p=(char *)malloc(100);
}
void Test()
{
char * str=NULL;
GetMemory(str);
strcpy(str,"Hello world");
printf(str);
}
实质:GetMemory(str)在调用时会生成一个_str与str指向同一个数,这是
因为C语言中函数传递形参不改变实参的内容,但是指针指向的内容是相同
的,因此可以用指针控制数据。题中的GetMemory(str),实质是对_str的操作
,并没有对str操作,函数结束后_str撤销,因此不会产生新的内存空间,s
tr仍然是一个空指针。
解决程序如下:
void GetMemory(char **p)
{
*p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str);
strcpy(str, "hello world");
printf(str);
}