笔试题(Test函数)
void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
请问运行Test函数会有什么样的结果?
答:试题传入GetMemory( char *p )函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的值,执行完 char *str = NULL; GetMemory( str ); 后的str仍然为NULL;
char *GetMemory(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test函数会有什么样的结果?
答:可能是乱码。 char p[] = "hello world";
return p;
的p[]数组为函数内的'局部自动变量,在函数返回后,内存已经被释放。这是许多程序员常犯的错误,其根源在于不理解变量的生存期。
【笔试题(Test函数)】相关文章:
华为2017笔试题08-16
360笔试题目10-20
华为2017笔试试题08-10
日语J.TEST考试E-F练习试题11-06
桂林银行笔试题笔经10-21
日语J.TEST考试E-F级读解练习试题11-06
J.TEST考试方法10-01