Re: [問題]陣列本身加減問題

看板Programming作者 (可愛小孩子)時間6年前 (2018/11/16 02:27), 6年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
宣告 int a[10][20][30][40] 以下假設: 1. a 起始位址為 0 2. int 佔一個 Byte 開始計算: a[5][5] = 5 * 20 * 30 * 40 + 5 * 30 * 40 = 126000 a[0][0] = 0 a[5][5] - a[0][0] = (126000 - 0)/40(註) = 3150 註: a[5][5],a[0][0] 型態是 int(*)[40],位移量 = 40 個 int &a[5][5] = a[5][5] = 126000 &a[0][0] = a[0][0] = 0 &a[5][5] - &a[0][0] = (126000 - 0)/(30 * 40) = 105 註: &a[5][5],&a[0][0] 型態是 int(*)[30][40],位移量 = 30 * 40 個 int a[5] = 5 * 20 * 30 * 40 = 120000 a[0] = 0 a[5] - a[0] = (120000 - 0)/(30 * 40) = 100 註: a[5],a[0] 型態是 int(*)[30][40],位移量 = 30 * 40 個 int 結論: 1. 先算出各別記憶體位址得到位址差 2. 位址差 / 型態位移量 = 總位移量 ※ 引述《glass0520 (快樂就好)》之銘言: : 此程式碼來源是106地特4等程式設計考題 : 題目問輸出為何? : https://imgur.com/oJU522G.jpg
: 這是我直接複製貼上直接跑出來的答案 : https://imgur.com/XPwfbC7.jpg
: 我直接把每個輸出出來 : 本來想說是要問元素個數,但四維陣列我難解析,數字也頗大 : 所以我用二維試試...如下 : https://imgur.com/FfheL6a.jpg
: 結果a[5][5] a[0][0] 跑出來的不是記憶體位址! : 下面兩個算式,我想大概是元素個數... : &a[5][5]-&a[0][0]大概是 d8c-cb0 -> dc ->16*d+c -> 220/4 -> 55 : a[5]-a[0]也符合 d78-cb0 -> c8 -> 16*c+8 -> 200/4 ->50 : 接下來我又試試一維陣列直接a[0]~a[5]輸出樣子... : https://imgur.com/1217fOa.jpg
: 我的問題是想請問,陣列沒設值情況下,直接給指定索引,到底是什麼意思? : 原題目是要問元素個數?然後只適用在四維陣列嗎? : 原題目輸出是怎麼出來的? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.223.62.12 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1542306468.A.54B.html ※ 編輯: cutekid (61.223.62.12), 11/16/2018 02:41:04
文章代碼(AID): #1RxRgaLB (Programming)
討論串 (同標題文章)
文章代碼(AID): #1RxRgaLB (Programming)