#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void GetMemory(char *p)
{
p=(char*)malloc(100);
}
int main(void)
{
char *str=NULL;
GetMemory(str);
strcpy(str,"hello word");
printf("%s", str);
return 0;
}
请问运行test函数有什么样的结果?
这是一道面试题,各位大侠帮忙分析一下呗,谢谢了?
}
void GetMemory(char *p)
{
p=(char*)malloc(100); //这里的p分配的内存,只是在GetMemory()里面,并没有在main函数里面,所以你的这个程序不会有输出结果,而且会有bug,程序运行会崩溃。。。。
}
简单修改下;:
#include <stdio.h> #include <stdlib.h> #include <string.h> char* GetMemoryDemo(char *p) { p = (char *)malloc(100); return p; } int main() { char *str = NULL; str = GetMemoryDemo(str); strcpy(str,"hello World"); printf("%s\n\n",str); return 0; }
strcpy(str,"hello word"); 程序会崩溃,str 是NULL的
GetMemory这个函数参数是传值,如果想正常,必须传地址,&或**
你可以用C++编译器调试一下看看,估计会更熟悉原因
好像h么?