void getm(char p)
{
p =(char *) malloc(10);
}
这种内存分配的方式为什么不行,而用二级指针就可以,或者如下:
char *getm()
{
p=(char)malloc(10);
return p;
}
主函数:
void main()
{
char *p = NULL;
getm(p);
strcpy(p,"hello");
printf("%s\n",p);
return 0;
}
void getm(char *p)
{
p =(char *) malloc(10);
}
这种方式之所以不行,是因为形参p和实参p并不是同一个指针(他们只是指向同一块内存而已)
你让形参p指向新malloc的地址并不会影响到你main函数里的实参p
只有传入一个二级指针或者一级指针的引用,或者你上面写的通过返回值接收才行
分配的是指针。你传入的参数就需要是指针才能赋值。类型才能匹配
malloc分配的是堆内存啊,直到被释放,分配的内存一直存在啊,为什么一级指针就不可以?