经典指数          
原因
2601
浏览数
0
收藏数
 

下面程序的输出结果是(      )
#include <stdio.h>
#include <stdlib.h>
void MallocMem(char* pc)
{
pc = (char*) malloc (100);

return;
}

int main()
{
char *str=NULL;

MallocMem(str);
strcpy(str,"hello ");
strcat(str+2, "world");

printf("%s",str);

return 0;
}

     举报   纠错  
 
切换
1 个答案
最开始str指向空,进入函数 MallocMem() 后 pc = (char*) malloc (100); 这句可以理解为在修改指针的指向,赋予了它一个新地址,但是参数在传递时,永远是值传递,在子函数中对参数做修改并不会影响主函数,函数调用结束后,str还是指向空,所以后面对这个指针的操作就会造成程序崩溃,当我们希望改变指针时,应该传入一个二级指针。不过这片空间在MallocMem调用结束后会不会回收我就不知道了,我是菜鸡
 
切换
撰写答案
扫描后移动端查看本题