Re: [問題] 一個二維陣列的問題
※ 引述《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
02/14 23:27, 2F
→
02/14 23:27, , 3F
02/14 23:27, 3F
→
02/15 09:53, , 4F
02/15 09:53, 4F
→
02/15 10:51, , 5F
02/15 10:51, 5F
→
02/15 11:05, , 6F
02/15 11:05, 6F
→
02/15 11:05, , 7F
02/15 11:05, 7F
推
02/15 12:08, , 8F
02/15 12:08, 8F
推
02/15 17:15, , 9F
02/15 17:15, 9F
→
02/15 17:17, , 10F
02/15 17:17, 10F
→
02/15 17:17, , 11F
02/15 17:17, 11F
推
02/15 17:41, , 12F
02/15 17:41, 12F
→
02/15 17:42, , 13F
02/15 17:42, 13F
→
02/15 17:42, , 14F
02/15 17:42, 14F
→
02/15 17:43, , 15F
02/15 17:43, 15F
推
02/15 18:45, , 16F
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
02/15 21:48, 17F
→
02/15 21:56, , 18F
02/15 21:56, 18F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章