定義多維陣列下標越界,陣列下標越界是怎麼回事啊?

2023-03-06 15:35:07 字數 1338 閱讀 3428

1樓:

使用 preserve,只能調整陣列最後一維的大小。

dim p() as byte

redim preserve p(1, 3)redim preserve p(1, 4)或。dim p() as byte

redim p(3, 3)

redim p(2, 4)

都是正確的。

只有上面2種定義是正確的,這是vb規定的。

解決方法可以定義成最後一維可變,其他維不變的形式:

redim preserve p(1, 3)redim preserve p(1, 4)如果實在定義不了的話,利用臨時陣列儲存資料,然後不用preserve,再把臨時陣列資料轉回p陣列:

dim p() as byte ,dim q() as byteredim preserve p(3, 1)redim q(3,1)

...p陣列資料轉至q陣列中。

redim p(4, 1)

...q陣列資料轉至回p陣列中。

2樓:匿名使用者

這個方法絕對可行的啊!

我想不出什麼更好的辦法了。

能解決問題不就是最終的目的嗎?

現在這個目的已經達到了。

試試這個方法吧。**如下。

dim p() as byte

redim preserve p(3, 1)dim c(3, 1) as byte, i as integer, j as integer

for i = 0 to 3

for j = 0 to 1

c(i, j) =p(i, j)

nextnext

redim p(4, 1)

for i = 0 to 3

for j = 0 to 1

p(i, j) =c(i, j)

nextnext

erase c

3樓:匿名使用者

同樣的問題同樣困擾著我。

陣列下標越界是怎麼回事啊?

4樓:王鵬翔

原因是這樣的:

inta[10];這是一個整型的陣列a,有10個元素:a[0]-a[9],因為正確的下標應該是從0開始,到9結束,與生活習慣中的1-10不一樣,於是產生一個a[10]的錯誤,即陣列下標越界。

c和c++語言中陣列下標越界,編譯器是不會檢查出錯誤的,但是實際上後果可能會很嚴重,比如程式崩潰等,所以在日常的程式設計中,程式設計師應當養成良好的程式設計習慣,避免這樣的錯誤發生。

若網頁時提示「陣列下標越界」,除檢查下上述問題外,再檢查下檔案中變數名稱是否一致,很多時候是變數名稱不一致所致。

c如何定義陣列下標

c c 中的下標,必須從0開始。比如int a 10 那麼下標範圍是0到9,你如果想用其它範圍去遍歷,專只好減去或加屬上一個數。比如用1到10去遍歷,for i 1 i 10 i a i 1 i 反正,下標範圍是0到9,這是變不了的。當然你可以定義一個指標p,指向陣列a的中間元素,那麼訪問下標就相應...

如何獲取多維陣列某個特定鍵陣列下標的所有值

這個只復 能通過一個變 制量累加,然後從中bai分解出下標值 k 0for each myd in tdata i k ubound tdata,1 lbound tdata,1 1 第一維下du標值 j k mod ubound tdata,2 lbound tdata,2 1 第二zhi維下標值...

如果設陣列變數為,那麼陣列這下標是不是1到10裡面的其中呢,陣列和下標是怎麼

程式語言裡面 陣列裡面的下標很多是從0開始的 而不是從1開始的 因此如果一個陣列有10個變數 在大多數程式語言裡面 陣列的下標是0到9 int a 10 這個陣列怎麼是10個元素?不是從0到10,應該11個元素嗎?int a 10 後面的是說的陣列大小不是最大下標一般下標是從0開始 也就是第一個元素...