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