这是我去一家公司的面试题目,麻烦大家帮忙解决一下
谢谢!
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);
}
函数形参和实参是不同的存储空间。
----------------解决方案--------------------------------------------------------
这是我去一家公司的面试题目,麻烦大家帮忙解决一下
谢谢!
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);
}
----------------解决方案--------------------------------------------------------
这题目看到N多次了
改的是指针本身的值,当然得用引用
----------------解决方案--------------------------------------------------------
这题目看到N多次了
改的是指针本身的值,当然得用引用
引用是c++中才有的,c中没有.
----------------解决方案--------------------------------------------------------
引用是c++中才有的,c中没有.
哦 不好意思 我说错了 不过实质是一回事
----------------解决方案--------------------------------------------------------
[QUOTE]这是我去一家公司的面试题目,麻烦大家帮忙解决一下
谢谢![/QUOTE]
作业就说是作业
我不相信哪家公司会出这种题!
----------------解决方案--------------------------------------------------------
{
p=(char *)malloc(100);
}
void Test(void)
{
char *str=NULL;
GetMemory(str); //江湖之大忌啊!传的是一个指针副本,p指向了申请的内存,但str没有啊!
strcpy(str,"Hello!");
printf("%s",str);
}
----------------解决方案--------------------------------------------------------
我懂了,谢谢各位
----------------解决方案--------------------------------------------------------
我懂了,谢谢各位
----------------解决方案--------------------------------------------------------