[問題] delete與二維陣列

看板C_and_CPP (C/C++)作者 (K.L)時間16年前 (2010/04/05 23:38), 編輯推噓0(0012)
留言12則, 2人參與, 最新討論串1/1
圖來源#1BU07sFp 想請問 在c++中刪除二維陣列的問題 希望自己的觀念沒有問題orz int a,b; int **pointer; pointer = new int*[3]; for(a=0 ; a<3 ; a++) pointer[a] = new int [2]; for(a=0 ; a<3 ; a++) for(b=0 ; b<2 ; b++) pointer[a][b] = a; for(a=0 ; a<3 ; a++) delete[]pointer[a]; delete [] pointer; 借用以前的圖 p[0] p[1] p[2] ┌─┐ ┌──┬──┐ (type: int*) p │ ┼──→ │ │ │ | ↓=========================↓ └─┘ └─┼┴─┼┘ | p[0][0] p[0][1] (type: int**) │ │ | ┌───┬───┐ ╰──┼───→ │ │ │ (type: int) │ | └───┴───┘ │ p[1][0] p[1][1] │ | ┌───┬───┐ ╰────→│ │ │ (type: int) └───┴───┘ | p[2][0] p[2][1] | ╰────→│ │ │ (type: int) └───┴───┘ 第三個delete For迴圈 是指先清掉============此區塊嗎? 最後一個是指將圖中間部分清掉? 這樣子的想法對嗎@ _ @? 懇請各位高手解惑 謝謝各位! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.191.88

04/05 23:41, , 1F
可參考 #1BU07sFp 這篇文章的第二個圖
04/05 23:41, 1F

04/05 23:42, , 2F
兩階段 delete[] 的對象完全不同 兩個都不能省略
04/05 23:42, 2F

04/05 23:48, , 3F
請問第一階段刪除的是該文章中 指標指到 p[][x]那部分嗎?
04/05 23:48, 3F

04/05 23:50, , 4F
不確定你指的是什麼 不過刪除的對象就是最右邊的部份
04/05 23:50, 4F

04/05 23:50, , 5F
迴圈每跑一次就會刪掉一個區塊
04/05 23:50, 5F

04/06 00:01, , 6F
請問這樣子的想法正確了嗎? 謝謝 !
04/06 00:01, 6F

04/06 00:02, , 7F
http://0rz.tw/XNBez 看看這個圖吧?
04/06 00:02, 7F

04/06 00:02, , 8F
你後來的補充是對的
04/06 00:02, 8F

04/06 00:03, , 9F
為什麼您前兩個迴圈都是 a<3,第三個變成 a<10 呢?
04/06 00:03, 9F

04/06 00:05, , 10F
因為呀 怕被同學看出來我在問作業 :) 謝謝J大細心解答
04/06 00:05, 10F

04/06 00:05, , 11F
我把數字跟變數名稱全部換掉
04/06 00:05, 11F
※ 編輯: kimgtob 來自: 140.116.191.88 (04/06 00:07)

04/06 00:14, , 12F
不過作業是要把上面的程式碼寫上去@_@ 不是問觀念
04/06 00:14, 12F
文章代碼(AID): #1BkWFZcE (C_and_CPP)
文章代碼(AID): #1BkWFZcE (C_and_CPP)