網(wǎng)站欄目策劃 有思想的新聞日本疫情最新數(shù)據(jù)
數(shù)組越界是c語言學(xué)習(xí)經(jīng)常會遇到的一個麻煩事。在C 語言中并不檢驗數(shù)組邊界,數(shù)組的兩端都有可能越界,從而使其他變量的數(shù)據(jù)甚至程序代碼被破壞。那么什么是數(shù)組越界呢?
一般情況下,數(shù)組的越界錯誤主要包括兩種:數(shù)組下標(biāo)取值越界與指向數(shù)組的指針的指向范圍越界。
今天我所講的是數(shù)組下標(biāo)取值越界。數(shù)組下標(biāo)越界是由于變量名稱不一致所致,是一個程序初學(xué)者最容易犯的錯誤之一。
首先我們以一個簡單的以為數(shù)組為例:
#include<stdio.h>
int main()
{int i;int arr[10];for(i=0;i<=10;i++){arr[i]=0;printf("%d\n",i);}return 0;
}
這里數(shù)組的長度定義為10,數(shù)組下標(biāo)從0開始,到9結(jié)束,與生活習(xí)慣中的1-10不一樣,于是產(chǎn)生一個a[10]的錯誤,即數(shù)組下標(biāo)越界。
c和c++語言中數(shù)組下標(biāo)越界,編譯器是不會檢查出錯誤的,但是實際上后果可能會很嚴(yán)重,比如程序崩潰等,就像這樣
因此在我們編寫程序時,要特別注意數(shù)組越界這一問題。
至于如何解決數(shù)組下標(biāo)越界呢,我們需要注意使用的角標(biāo)大于等于數(shù)組的長度或為負(fù)數(shù)。