这是我去一家公司的面试题目,麻烦大家帮忙解决一下
谢谢!
void GetMemory(char *p)
{
p=(char *)malloc(100);
}
void Test(void)
{
char *str=NULL;
GetMemory(str);
strcpy(str,"Hello!");
printf("%s",str);
}
请问上述程序在运行时候有什么错误,分析错误原因并修改给出答案,另注:不许增删语句。
[求助]关于指针分配内存的问题
这是我去一家公司的面试题目,麻烦大家帮忙解决一下
谢谢!
void GetMemory(char *p)
{
p=(char *)malloc(100);
}
void Test(void)
{
char *str=NULL;
GetMemory(str);
strcpy(str,"Hello!");
printf("%s",str);
}
请问上述程序在运行时候有什么错误,分析错误原因并修改给出答案,另注:不许增删语句。
2006-09-09 21:41
void GetMemory(char **p)
{
*p=(char *)malloc(100);
}
void Test(void)
{
char *str=NULL;
GetMemory(&str);
strcpy(str,"Hello!");
printf("%s",str);
}
函数形参和实参是不同的存储空间。

2006-09-09 22:00
这是我去一家公司的面试题目,麻烦大家帮忙解决一下
谢谢!
void GetMemory(char *p)
{
p=(char *)malloc(100);
}
void Test(void)
{
char *str=NULL;
GetMemory(str);
strcpy(str,"Hello!");
printf("%s",str);
}
请问上述程序在运行时候有什么错误,分析错误原因并修改给出答案,另注:不许增删语句。
str传到p是值传递,GetMemory(str)调用结束,str仍然是NULL,而NULL系统规定不能访问.
改正如下:
void GetMemory(char **p)
{
*p=(char *)malloc(100);
}
void Test(void)
{
char *str=NULL;
GetMemory(&str);
strcpy(str,"Hello!");
printf("%s",str);
}

2006-09-09 22:02
2006-09-09 22:04
2006-09-09 22:08
引用是c++中才有的,c中没有.
哦 不好意思 我说错了 不过实质是一回事

2006-09-09 22:25

2006-09-09 23:18

2006-09-09 23:52
我懂了,谢谢各位
2006-09-10 11:25
2006-09-10 11:26