※ 引述《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;
順帶一提,你把變數名稱取反了,
不過為避免混亂就照你原先的命名寫。
--
Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net
School: National Tsing Hua University Department: Computer Science
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Undecided
Homepage: https://it.muds.net/~uranus
--
╔═══╗ ┼────────────────────────╮
║狂狷 ║ │* Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮
║ 年少║ ┼╮ < IP:140.119.164.252 > ╰─╮
╚╦═╦╝ ╰ * From:61-230-224-108.dynamic.hinet.net
─╨─╨─ KGBBS ─ ◎ 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩 ◎