筆試題(Test函數)
void GetMemory(char *p)

{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
請問(wèn)運行Test函數會(huì )有什么樣的結果?
答:試題傳入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);
}
請問(wèn)運行Test函數會(huì )有什么樣的結果?
答:可能是亂碼。 char p[] = "hello world";
return p;
的p[]數組為函數內的'局部自動(dòng)變量,在函數返回后,內存已經(jīng)被釋放。這是許多程序員常犯的錯誤,其根源在于不理解變量的生存期。
【筆試題(Test函數)】相關(guān)文章:
華為2017筆試題08-16
360筆試題目10-20
華為2017筆試試題08-10
桂林銀行筆試題筆經(jīng)10-21
2017年日語(yǔ)J.TEST考試文法詞匯練習試題11-06
J.TEST考試方法10-01