筆試中數組越界問(wèn)題
下面這個(gè)程序執行后會(huì )有什么錯誤或者效果:
#define MAX 255
int main()
{
unsigned char A[MAX],i;
for (i=0;i<=MAX;i++)
A[i]=i;
}
解答:MAX=255,數組A的下標范圍為:0..MAX-1,這是其一,其二 當i循環(huán)到255時(shí),循環(huán)內執行: A[255]=255;這句本身沒(méi)有問(wèn)題,但是返回for (i=0;i<=MAX;i++)語(yǔ)句時(shí),由于unsigned char的取值范圍在(0..255),i++以后i又為0了..無(wú)限循環(huán)下去.
注:char類(lèi)型為一個(gè)字節,取值范圍是[-128,127],unsigned char [0 ,255]
拓展閱讀:
語(yǔ)法錯誤不等于不能執行,能執行不等于結果正確....
結論:
越界是肯定的
內存是很大的
舉個(gè)例子吧:
int main(...){
int a =0;
int b[3] = 0;
b[3] = 1;
}
//結果有可能使a=1;
//具體結果跟進(jìn)程中棧排列有關(guān)
越界雖然會(huì )影響其它內存位置的變量,但只能影響本進(jìn)程空間的'內存,對其他程序沒(méi)有影響,除非你的越界已經(jīng)延伸到了環(huán)境變量的位置
unix/linux下可能的錯誤(其他的不知道):
SIGBUS 總線(xiàn)錯誤
SIGSEGV 段地址錯誤
【筆試中數組越界問(wèn)題】相關(guān)文章:
《公民凱恩》中的視角越界08-19
JavaScript中的索引數組、關(guān)聯(lián)數組和靜態(tài)數組、動(dòng)態(tài)數組的分類(lèi)講11-10
幾個(gè)常見(jiàn)的軟件測試面試筆試中的問(wèn)題12-09
ASP筆試問(wèn)題集11-27
淺談javascript數組06-19
中軟集團筆試題12-20
關(guān)于PHP數組內存耗用太多問(wèn)題的解決方法11-20
JSON數組用法介紹11-10