線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:665
推到 Plurk!
推到 Facebook!

二列陣列超過時會如何?

尚未結案
黑輪
中階會員


發表:135
回覆:188
積分:64
註冊:2004-01-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-08 13:47:39 IP:140.124.xxx.xxx 未訂閱
我家義一個二維陣列int A[3200][10]; k=12; 如果A[100][k]=99 , 是不是超過我定義的範圍了,哪此時會發生什麼事啊? 是不是會改變A[101][0]的值啊? 我的好像是發生這種情形?
johnjohn
一般會員


發表:6
回覆:59
積分:13
註冊:2004-04-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-09 02:16:53 IP:61.216.xxx.xxx 未訂閱
if the address of A is 0x12FF00, &(A[100][12]) = 0x12FF00 sizeof(A[][])*sizeof(A[100])*100 sizeof(A[][]) * 12 = 0x12FF00 4 * 10 *100 4 * 12 &(A[101][0]) = 0x12FF00 sizeof(A[][])*sizeof(A[100])*101 sizeof(A[][]) * 0 = 0x12FF00 4 * 10 *101 4 * 0 &(A[100][12])-&(A[101][0])= 0x08 因此,如果超過了範圍,當然會有所影響囉 p.s.二維陣列就是一維陣列 >>SPATIAL INFORMATION IS COOOOL<<
黑輪
中階會員


發表:135
回覆:188
積分:64
註冊:2004-01-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-10 09:26:07 IP:140.124.xxx.xxx 未訂閱
超過陣列大小會有影響,哪是會發生什麼事呢? 假如我定義a[10][5]={0}; 哪當我存入a[4][6]時(6超過了定義的大小),會發生什麼事呢? 是不是會造成a[5][x]某個值的改變呢?
johnjohn
一般會員


發表:6
回覆:59
積分:13
註冊:2004-04-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-10 11:02:15 IP:203.70.xxx.xxx 未訂閱
因為二維陣列事實上就是一維陣列,而當你用a[m][n]來取得陣列中某一元素時,compiler會將此敘述轉換為指標的運算,即:*(*(a m) n).因此,即使你用了超過所定義的範圍時,只要沒有超過此陣列的大小(e.g. m*n),它都會改變到陣列中另一元素的值.如:存入a[4][5]時,會改變到a[5][0]內原先所存放的值;存入a[4][6]時,會改變到a[5][1]內原先所存放的值 >>SPATIAL INFORMATION IS COOOOL<<
黑輪
中階會員


發表:135
回覆:188
積分:64
註冊:2004-01-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-10 11:14:29 IP:140.124.xxx.xxx 未訂閱
哪是不是所以謂的二維陣列就是把二串一維陣列接起來,所以當第一串存滿時,就會順著存到下一串陣列裡面去呢? 感謝johnjohn兄清楚的說明哦~
johnjohn
一般會員


發表:6
回覆:59
積分:13
註冊:2004-04-20

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-05-10 11:26:15 IP:203.70.xxx.xxx 未訂閱
>>
黑輪
中階會員


發表:135
回覆:188
積分:64
註冊:2004-01-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-05-10 11:33:15 IP:140.124.xxx.xxx 未訂閱
good~了解~感謝哦~
系統時間:2024-07-01 6:36:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!