※ 引述《tinlans.bbs@whshs.cs.nccu.edu.tw (汀)》之銘言:
> ※ 引述《junshung@kkcity.com.tw (... (b) pic)》之銘言:
> > 如果今天我宣告一個一個維矩陣跟一個指標
> > 如
> > int ptr[2]={0,1};
> > int *array ;
> > array=ptr ; //書上寫:ptr給array位址
> > 但如果今天是二維 (或2維以上)
> > int ptr[2][2]={{0,1},{2,3}};
> > int **array;
> > array=ptr ;
> > 請問這樣寫為啥不能
> > 因為如果我要將一個2維矩陣 傳到一個函式 不是要傳位址ㄇ
> > 但我一直有錯 =.=
> > 一直卡在這裡 >”< 一唯都能 二維以上都不能
> > (唉 要把矩陣方面的公式寫成函式 有點小挫折)
> 因為 int [2][2] 跟 int ** 是不同的 type,
> 兩者之間也不可以互相轉換,
> 在 C++ 這種 strict type checking 語言是不允許的,
> 不過在 C 可以這麼做。
> 這樣寫就能通過編譯了:
> array = reinterpret_cast<int **>(ptr);
> 不過這並不是好的做法,
> 對正確觀念也會有所影響;
> 正式的寫法應該是,
> 你將 array 這個 pointer 宣告為 int (*) [2]:
> int ptr[2][2];
> int (*array)[2];
> array = ptr;
> 順帶一提,你把變數名稱取反了,
> 不過為避免混亂就照你原先的命名寫。
那可以再請問一下 如果是動態矩陣 也是這樣ㄇ 我試過 好像不能
--
┌─────◆KKCITY◆─────┐▇─┐KKADSL→六星級優質連線服務
│ bbs.kkcity.com.tw │┴ └─▇ 馬上申請帶你上網環遊全世界!
└──《From:140.118.4.95 》──┘ KKADSL ┴ http://adsl.kkcity.com.tw
--