成人黄色在线网站 I 国产aa免费 I 中文字幕免费高清 I 国产三级影院 I 日韩欧美三级在线观看 I 久久久国产精品麻豆a片 I 欧美与黑人午夜性猛交久久久 I 91国产精品视频在线 I 国产美女狂喷水潮在线播放 I 黄页免费网站在线观看 I 欧美日韩激情视频 I 午夜理论无码片在线观看免费 I 深夜爽爽动态图无遮无挡 I 国精产品一区一区三区有限公司杨 I 天天操天天舔天天爽 I 免费看日本黄色片 I 成人va在线 I 日韩中文字幕在线观看 I 婷婷综合网 I 97视频免费观察看 I 色月丁香 I 日韩视频一二三 I 男女黄色毛片 I 美女疯狂连续喷潮视频 I 亚洲日本va一区二区sa I 欧美日韩视频区 I 毛片网在线 I 欧美一本在线 I 少妇一级淫片免费放香蕉 I avav在线看 I 久久精品亚洲中文字幕无码网站 I 天堂av在线中文在线新版 I 电影一区 电影二区 I 色av吧 中文字幕 I 国产精品伊人色

歡迎來到培訓無憂網!

全國切換

咨詢熱線 400-001-5729

位置:培訓無憂網 > 新聞資訊 > 電腦/IT > c語言 >  C語言培訓問答之為什么沒有數組下標越界檢查?

C語言培訓問答之為什么沒有數組下標越界檢查?

來源:www.hebeijilong.cn 發布人:星星

2021-12-24 11:03:27|已瀏覽:147次

數組下標越界檢查

      各位,相信你們對數組的使用已經再熟悉不過了,不過大家有沒有想過數組使用的越界問題,換句話說,C對數組的長度范圍會進行檢查嗎?

      答案是不會。因此當向數組越界寫入數據的時候,經常產生“內存被破壞”的問題。如果在較早的階段,操作系統發現異常并且提示Segmentation fault,或者“強制關閉異常的應用程序”。但此時相鄰變量的值已經被破壞,程序卻還在繼續運行,那后果就不可想象了。既然這樣,為什么C標準還是不會去檢查呢?
       有人說頻繁地進行范圍檢查會影響效率,但至少應該讓我們在編譯的時候可以使用一個選項,以便要求編譯器在調試模式下編譯程序的時候,幫我們實施數組下標范圍的檢查。有這樣的想法的人,不只是我一個吧。但是,請稍微再想一想這個問題。對于C來說,當數組出現在表達式中的時候,它會立刻被解讀成指針。此外,使用其他的指針變量也可以指向數組的任意元素,并且這個指針可以隨意進行加減運算。引用數組元素的時候,雖然你可以寫成a[i],但是它只不過是*(a+i)的一種表達。
       還有,當你向一個函數傳遞數組的時候,實際上你傳遞的是一個指向初始元素的指針。如果這個函數還存在于其他的代碼文件中(另外一個編譯單元),那么通過編譯器是不可能追蹤到數組的。要求這樣的語言在編譯時生成檢查數組長度的代碼,是不是有些強人所難?其實如果你一定要進行數組長度檢查,可以考慮將指針封裝成結構體那樣,運行時讓指針自身持有可取值范圍的信息。可是這么做對性能的影響很大,同時,也喪失了非調試模式下編譯后的庫和指針的兼容性。

       因此C不會對數組進行越界檢查,實際上,除了某些解釋型的編程語言之外,目前幾乎沒有編譯器可以為我們做數組的越界檢查。這就對我們寫代碼的提出了一些要求,那大家以后就要注意了!

       本文由培訓無憂網達內教育專屬課程顧問老師整理發布,更多C語言課程信息可關注培訓無憂網C語言培訓頻道或添加老師微信:15033336050

      注:尊重原創文章,轉載請注明出處和鏈接 http://www.hebeijilong.cn/news-id-9752.html 違者必究!部分文章來源于網絡由培訓無憂網編輯部人員整理發布,內容真實性請自行核實或聯系我們,了解更多相關資訊請關注c語言頻道查看更多,了解相關專業課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050

留下你的信息,課程顧問老師會一對一幫助你規劃更適合你的專業課程!
  • 姓名:

  • 手機:

  • 地區:

  • 想學什么:

  • 培訓無憂網
免 費 申 請 試 聽
提交申請,《培訓無憂網》課程顧問老師會一對一幫助你規劃更適合你的專業課程!