堆区创建的指针调用时,不能使用同级的。比如主调函数一级指针,被调函数的参数就要使用二级指针接收。
#include <stdio.h>
#include <malloc.h>
#include <string.h>
void allocateSpace1(char *pp){
char *temp = malloc(100);
memset(temp , 0 , 100);
strcpy(temp , "hello world");
pp = temp;
}
void allocateSpace2(char **pp){
char *temp = malloc(100);
memset(temp , 0 , 100);
strcpy(temp , "hello world");
*pp = temp;
}
int main()
{
char *p = NULL;
allocateSpace1(p);
printf("allocateSpace1 : %s\n",p);
p = NULL;
allocateSpace2(&p);
printf("allocateSpace2 : %s\n",p);
return 0 ;
}
allocateSpace1 : (null)
allocateSpace2 : hello world