看板 C_and_CPP 關於我們 聯絡資訊
請問大家關於二維陣列 我的觀念是二維陣列除了資料的空間以外 還要包含一維陣列的pointer之空間 所以寫了以下的code來配置 不過好像會有錯,不知道什麼原因? 不知可否請各位大大解惑? int** arr2; arr2 = (int **)new int[m+m*n]; for(int i=0;i<m;i++){ arr2[i] = (int*)(arr2+n*i); }//end for -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.56.66
yvb:1. new int 那列, 不建議假設 int* 和 int 大小相同. 01/27 15:56
yvb:2. arr2[i] = (int*)(arr2+n*i); 至少後面應為 (arr2+m+n*i); 01/27 15:57
purpose:二維陣列看幾個元素,空間就多大,沒什麼一維陣列指標空間 01/27 16:00
yvb:建議還是先 arr2 = new int*[m]; 再 arr2[0] = new int[m*n]; 01/27 16:00
yvb:再跑廻圈建立 arr2[i] 的指向. 01/27 16:01
johnpage:點線面,二維是ㄧ維的集合,三維是二維的集合。 01/27 16:02
testPtt:這樣可以嗎:arr2 = new int*[m+m*n]; 01/27 16:03
Feis:不行 01/27 16:09
rockmanray:感謝yvb,改成(arr2+m+n*i),這邊知道假設pointer和int 01/27 16:40
rockmanray:一樣大不太好,不過想要測試一下,所以至少知道自己觀 01/27 16:40
rockmanray:念不太對,一維陣列的pointer是先放在前面,所以才要+m 01/27 16:42
Feis:這不只是不好的問題,硬要的話用 char 配置 01/27 16:48
Feis:再用 placement new 01/27 16:50
rockmanray:想請問二維陣列與int**的差別就是在那個+h的地方嗎? 01/28 12:12
rockmanray:int** 動態配置時會將一維指標放在前面 01/28 12:12
rockmanray:可是int[][] 因為有array的標示所以不需要那些一維指 01/28 12:13
rockmanray:標嗎? 01/28 12:13