※ 引述《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;
> 順帶一提,你把變數名稱取反了,
> 不過為避免混亂就照你原先的命名寫。
謝謝你 ^^, 但我不太懂 int(*)[2] 這種宣告方式 (可能是我的書或我的理解太差了=.=)
還有你的意思是說 int[2] (一維來說的話) 跟int*是同一種type囉 那又是為啥ㄋ?
--
┌─────◆KKCITY◆─────┐ ■ KKBOX 可立刻 聽音樂 ■
│ bbs.kkcity.com.tw │ ■■所有想找的歌通通不必等 ■■
└──《From:140.118.4.95 》──┘ ■■■http://www.kkbox.com.tw■■■
--