筆試中數組越界問題

時間:2020-11-21 18:19:27 筆試題目 我要投稿

筆試中數組越界問題

  下面這個程序執行后會有什么錯誤或者效果:

筆試中數組越界問題

  #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循環到255時,循環內執行: A[255]=255;這句本身沒有問題,但是返回for (i=0;i<=MAX;i++)語句時,由于unsigned char的取值范圍在(0..255),i++以后i又為0了..無限循環下去.

  注:char類型為一個字節,取值范圍是[-128,127],unsigned char [0 ,255]

  拓展閱讀:

  語法錯誤不等于不能執行,能執行不等于結果正確....

  結論:

  越界是肯定的

  內存是很大的

  舉個例子吧:

  int main(...){

  int a =0;

  int b[3] = 0;

  b[3] = 1;

  }

  //結果有可能使a=1;

  //具體結果跟進程中棧排列有關

  越界雖然會影響其它內存位置的變量,但只能影響本進程空間的'內存,對其他程序沒有影響,除非你的越界已經延伸到了環境變量的位置

  unix/linux下可能的錯誤(其他的不知道):

  SIGBUS 總線錯誤

  SIGSEGV 段地址錯誤

【筆試中數組越界問題】相關文章:

《公民凱恩》中的視角越界08-19

JavaScript中的索引數組、關聯數組和靜態數組、動態數組的分類講11-10

PHP中如何創建和修改數組11-25

幾個常見的軟件測試面試筆試中的問題12-09

ASP筆試問題集11-27

淺談javascript數組06-19

中軟集團筆試題12-20

關于PHP數組內存耗用太多問題的解決方法11-20

JSON數組用法介紹11-10

亚洲制服丝袜二区欧美精品,亚洲精品无码视频乱码,日韩av无码一区二区,国产人妖视频一区二区
亚洲欧美中文字幕在线一区二区 | 中文字幕亚洲一区二区va在线 | 亚洲一区中文字幕制服丝袜 | 亚洲污视频在线观看 | 亚洲国产日韩欧美一区二区三区 | 亚洲国产一级在线观看 |