下標越界

只能在定義的範圍內訪問數組元素和集合成員。此錯誤有以下的原因和解決方法。

簡介

只能在定義的範圍內訪問數組元素和集合成員。此錯誤有以下的原因和解決方法。

VB中的數組越界

引用了不存在的數組元素.

下標可能比下標範圍大或小,或是在應用程式中這一邊的數組沒有指定範圍。檢查數組的聲明以確認其上界和下界。若使用的是重新指定範圍的數組,應使用 UBound 和 LBound 函式來決定數組訪問。如果索引指定為變數,應檢查變數名的拼寫。

聲明數組時沒有指定元素的數目。例如,下列的代碼就會導致此錯誤:

Dim MyArray() As Integer

MyArray(8) = 234 ' 導致錯誤 9。

Visual Basic 並不會將沒有指定範圍的數組自動設為 0 – 10。相反必須使用 Dim 或 ReDim 來指定數組中元素的數目。

引用了不存在的集合成員。

試著使用 For Each...Next 結構代替指定元素下標。

使用速寫形式的下標,結果指定了錯誤的元素。

例如,當在集合上使用 ! 運運算元時,! 自動指定了一個鍵。例如 object!keyname.value 和 object.item(keyname).value 是一樣的。在此例中,集合中如果 keyname 表示一個錯誤鍵,錯誤就會產生。若要改進此錯誤,在集合對象中使用正確的鍵名稱或索引。

詳細信息,可選取有問題的項目,並按下 F1 鍵。

C++中的下標越界

試圖訪問數組中不存在的元素,使用標準庫vector模板和string類的at函式可以提供下標檢查,如果越界則拋出異常.

靜態數組動態數組都可能造成越界.

如:

int A[20];

cout<<A[-1];//A[-1]不存在

下標越界 下標越界

cout<<A[20];//A[20]也不存在,C++中,數組下標的最大值比數組大小小1.int *B;

B=new int[20];//如果new操作失敗,或者沒有這一句,對B數組的訪問都會失敗.平台不同,造成的後果不一定相同.

相關詞條

相關搜尋

熱門詞條

聯絡我們