精華區beta Programming 關於我們 聯絡資訊
※ 引述《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"的狂狷不馴;屬於年少的輕狂色彩