推 nctucch17170: *(a2+i)? (*a2+i)? 11/19 15:29
請問 要這樣寫嗎? *(a2+i)+j 剛剛試過 結果會印出 6個不同的記憶體位置
所以我又加上 *(*(a2+i)+j) 執行後就會出現
array.exe (array是我的project名字)沒有回應
推 purpose: a2 這種寫法,你要在執行時期配置記憶體,也就是要作 new 11/19 17:09
→ purpose: 程式當掉,應該會有錯誤訊息,那很重要 11/19 17:10
→ purpose: 如果你要把 a2 指向 a1 的話,應該用 int (a2)[2] = a1; 11/19 17:12
→ purpose: 少打 int (*a2)[2] = a1; 11/19 17:12
我有上網找 好像寫法會略有不同
int **a2;
a2 = new int*[10];
可是這樣 a1給值 好像 就與a2無關
文章上說的錯誤是指 執行後 會出現 array.exe (array是 project名稱) 沒有回應
感覺是存取錯誤的記憶體位置 才發生這種問題
→ dirkc: 原po寫法等於*(*a2+i+j) , 一樓已提示囉 11/19 17:13
→ ichleibeqbi: *(a2 + i * 2 + j) 11/19 17:18
這個寫法 剛剛試過 也是不行
好像是要
int a1[3][2] ;
int* a2 =(int*)a1;
就可以正確取值
※ 編輯: ipod7788 (163.15.165.131), 11/19/2014 18:04:19
推 s25g5d4: 哪個網頁教你可以用雙重指標接二維陣列的阿 11/19 18:05
http://ppt.cc/mxeN 其實他也沒有教 他好像是說這樣普遍寫法是這樣(!?)
※ 編輯: ipod7788 (163.15.165.131), 11/19/2014 18:12:44
→ dirkc: 疏忽了orz purpose與s25g5d4說的對 11/19 18:22
推 s25g5d4: 我甚麼都沒說阿? 11/19 18:27
推 s25g5d4: 首先你要知道 a1 會指向 a[0][0] 這樣你就知道為什麼 11/19 18:34
→ s25g5d4: 不能用雙重指標接二維陣列了 11/19 18:34
→ dirkc: 我猜你意思是不能用,所以說你說的對 XD 11/19 20:51
所以那個網頁寫的是錯的嗎?
int a[2][3]; int** a2=(int**) al <--這個
另外想請問一下 這樣寫法 int(*) a2 = (int*)a1
是轉二維轉成 一維陣列的意思嗎?
※ 編輯: ipod7788 (114.39.0.63), 11/19/2014 22:34:22
謝謝提醒~ 我還想說那篇文章評價蠻高的 應該不太會有錯
※ 編輯: ipod7788 (114.39.0.63), 11/20/2014 00:23:01
→ ichleibeqbi: 更正一下 *((int*)a2 + i * 2 + j) 11/20 09:56
推 dirkc: 代表在C/C++主題上這個板比該網站稍稍略勝一籌 11/20 12:04
→ ipod7788: 兩邊都看 不一樣就可以跟板友討論一下XD 11/21 09:28