Re: [問題] 一個二維陣列的問題

看板C_and_CPP (C/C++)作者 (石斛蘭)時間16年前 (2010/02/14 22:00), 編輯推噓7(7011)
留言18則, 6人參與, 最新討論串2/3 (看更多)
※ 引述《Arim (Arim5566)》之銘言: : 小弟愚昧,請問一下 : int dis[20][20]; //這是一個二維陣列,dis指向一個二維陣列 : int **p; : 一般做動態陣列的時候,可以使p指向一個二維的陣列 : 現在我不做動態配置,直接利用assignment: p=dis; : 將dis的位址assign給 p,可是compile不會給我過 : 如果同樣的問題用一維的陣列就可以過 : 請問這是為什麼呢?? 簡單的來說, 這是因為 type 不同所導致的 20有點長 , 用 int dis[2][2]; 來說好了 他的記憶體配置是這樣的連續分佈 (type: int) ↗ ↑ ↑ ↖ [0][0] [0][1] [1][0] [1][1] ┌───┬───┬───┬───┐ dis│ │ │ │ │ └───┴───┴───┴───┘ dis[0] dis[1] 其中 dis, dis[0], dis[1] 都是陣列 而如果是 int **p; 的話, 則是像下圖那樣 p[0] p[1] ┌─┐ ┌──┬──┐ (type: int*) p │ ┼──→ │ │ │ └─┘ └─┼┴─┼┘ p[0][0] p[0][1] (type: int**) │ │ ┌───┬───┐ ╰──┼────→│ │ │ (type: int) │ └───┴───┘ │ p[1][0] p[1][1] │ ┌───┬───┐ ╰────→│ │ │ (type: int) └───┴───┘ 這三塊記憶體都不一定是連續的 所以雖然兩個都是二維陣列 但是其實記憶體配置方式差滿多的 -- 舊圖新PO XD -- 人家可不是為了你才這樣做的哦! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.198.35.85

02/14 22:16, , 1F
感謝
02/14 22:16, 1F

02/14 23:27, , 2F
dis->出去那格怪怪的吧?? 這個case裡, dis的位址剛好也
02/14 23:27, 2F

02/14 23:27, , 3F
是dis[0][0]的位址不是嗎@_@"
02/14 23:27, 3F

02/15 09:53, , 4F
好圖!
02/15 09:53, 4F

02/15 10:51, , 5F
再問一下 如果是dis[2][3][4] 那dis的type是什麼??
02/15 10:51, 5F

02/15 11:05, , 6F
是int(*)[2][3]嗎?
02/15 11:05, 6F

02/15 11:05, , 7F
說錯 是int(*)[3][4]嗎
02/15 11:05, 7F

02/15 12:08, , 8F
指向 dis 的指標的確是 int(*)[3][4] 無誤
02/15 12:08, 8F

02/15 17:15, , 9F
應該是這樣吧: dis = &(dis[0]) ,*dis == &(dis[0][0])
02/15 17:15, 9F

02/15 17:17, , 10F
所以...dis應該不是直接指向dis[0][0]
02/15 17:17, 10F

02/15 17:17, , 11F
不過是真的連續...(我原本不知道說,筆記筆記...)
02/15 17:17, 11F

02/15 17:41, , 12F
樓上, 試著印一下 dis, dis[0], *dis, &dis[0],
02/15 17:41, 12F

02/15 17:42, , 13F
&dis[0][0], 以及 &dis 試試....~_~
02/15 17:42, 13F

02/15 17:42, , 14F
另外, 陣列跟指標使用上也許有點像, 但請不要真的完全用
02/15 17:42, 14F

02/15 17:43, , 15F
一樣的概念去看; 試試任意 array[] 與 &array 吧:)
02/15 17:43, 15F

02/15 18:45, , 16F
...感謝樓上V大,原來是小弟我本身測試上的問題....
02/15 18:45, 16F
thx! ※ 編輯: dendrobium 來自: 60.198.35.85 (02/15 19:13) ※ 編輯: dendrobium 來自: 60.198.35.85 (02/15 19:29)

02/15 21:48, , 17F
d大辛苦, 推一下好圖:)
02/15 21:48, 17F

02/15 21:56, , 18F
不辛苦~ 有所收穫比較重要~
02/15 21:56, 18F
文章代碼(AID): #1BU07sFp (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BU07sFp (C_and_CPP)