通过调用getMen函数给main函数中的指针变量开辟空间
int getMen(char** p) // 指针变量的地址,所以需要二级指针来接收 { // 打印一下传过来的地址,肯定和main函数中打印相同,他传过来的 printf("getmen p=%pn",p); // *p 这个地址 指向的内存空间,初始化为NULL,所以打印NULL printf("getmen *p=%pn",*p); if(p == NULL) return -1; // 自定义变量temp 开辟100个字节空间 char* temp = (char*)malloc(sizeof(char)*100); // 判断释放开辟成功 if(temp == NULL) { return -2; } // 向开辟成功的空间赋值 strcpy(temp,"abcde"); // p是,传过来的地址, // *p这个地址指向的内存空间, // 现在将它指向刚才开辟成功的堆空间 *p = temp; printf("%sn",*p); return 0; } int main(void) { char* p = NULL; printf("main p=%pn",&p); // 查看一下指针变量,p自己的地址 int ret = getMen(&p); // 指针自己的地址传过去 if(ret != 0) { printf("getMen error %dn",ret); } // 函数调用成功之后,p的值不在是NULL // 现在指向刚才开辟成功的堆空间 printf("%sn",p); // 堆空间释放 if(p !=NULL) { free(p); p = NULL; } return 0; }
图片为了方便看现象,他们不是,单独的存在,
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)