筆試題(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