用函数的形参指针往申请内存
用函数的形参指针去申请内存#include stdio.h#include malloc.h#include string.hvoid GetMemory(ch
用函数的形参指针去申请内存
#include <stdio.h>
#include <malloc.h>
#include <string.h>
void GetMemory(char *p1,int num)
{
p1=(char *)malloc(sizeof(char)*num);
}
void Test()
{
char *str=NULL;
GetMemory(str,100); //str仍然为NULL
//printf("%x",str); //输出为0
strcpy(str,"hello"); //运行时错误
}
int main()
{
Test();
return 0;
}
1.调用函数GetMemory()时,str和p1都指向了这个申请的内存地址;调用后,形参p1释放,那块内存还在,此时str不是指向了内存块地址吗?这里怎么理解,纠结老半天了?谢谢 指针 内存 malloc
[解决办法]那个p1,他不是str,是一他的一份拷贝,相当于
p1=str,你对p1修改,肯定不会影响str.
[解决办法]函数调用时是把实参(这里是str)的值赋给形参(p1),然后就和实参没有什么关系了,操作的完全是形参了,所以str得不到申请的空间地址。如果想要改变实参的值,可以通过传递其地址(这里也就是指针str的地址),然后再函数内容通过解引用这个地址来改变地址的值(str)