推 plover:cannot convert `int (*)[5]' to `int*' 02/16 22:19
推 freehaha:這..強轉其實就可以了, 你的觀念並沒有錯 02/16 22:21
→ freehaha:只是compiler 比較strict 而已, 當然全部用一維陣列自己 02/16 22:23
→ freehaha:index 也可以, 我通常選擇後者. 02/16 22:23
→ uncleuse:原來如此, 感謝回答!! 02/17 10:02
推 VictorTom:應該有差吧? print 指標 Num+5 和 Num[1] 試試看 @_@" 02/17 12:30
→ VictorTom:記憶體是連續的觀念沒錯, 但是Num是2D ptr的時候.... 02/17 12:30
→ VictorTom:Num + CONST後的位置會指到的地方不太對吧....?_? 02/17 12:31
→ VictorTom:或者如你所想的試試Num+5 vs (int*)Num+5 的值 ?_? 02/17 12:33
→ uncleuse:記憶體位址真的不一樣... 02/17 17:22
→ uncleuse:請問宣告Num[2][5]之後, Num[1]是誰的位址呢? 02/17 17:25
→ uncleuse:還有(int*)Num是什麼意思呢? 02/17 17:26
→ uncleuse:我剛初學, 還請大家多多指教~~謝謝!!!! 02/17 17:28
推 pinchieh:PrintArray(int** a) { printf("%d", *(*(a+1)+0));} 02/17 17:56
→ pinchieh:main() { ... PrintArray(Num); ... } 02/17 17:58
推 VictorTom:樓上的一樣有error, cannot convert `int (*)[5]' to 02/17 18:05
→ VictorTom:`int**' for argument `1' to `int PrintArray(int**)' 02/17 18:06
→ VictorTom:而且這種解析2D ptr的方式總覺得很危險會有問題....Orz 02/17 18:13
推 pinchieh:#include <stdio.h> 02/17 19:49
→ pinchieh:void PrintArray(int array2D[][5]); 02/17 19:49
→ pinchieh:int main(int argc, char *argv[]) 02/17 19:49
→ pinchieh:{ 02/17 19:49
→ pinchieh:int Num[2][5] = {{1, 2, 3, 4, 5},{ 6, 7, 8, 9, 10}}; 02/17 19:50
→ pinchieh:PrintArray(Num); 02/17 19:50
→ pinchieh: return 0; 02/17 19:50
→ pinchieh:} 02/17 19:50
→ pinchieh:void PrintArray(int array2D[][5]) 02/17 19:50
→ pinchieh:{ printf("%d \n", *(*(array2D+1)+0)); } 02/17 19:51
→ uncleuse:所以是不是說當我宣告Num[2][5]時 02/17 21:21
→ uncleuse:Num這個變數名代表一個指標 02/17 21:24
→ uncleuse:且這個指標指向一個有兩個元素之陣列的開頭 02/17 21:26
→ uncleuse:而這個陣列裡的兩個元素都是指標變數 02/17 21:27
→ uncleuse:且這兩個指標變數分別指向另兩個陣列的開頭 02/17 21:29
→ uncleuse:這兩個陣列裡都存有5個int型態的整數 02/17 21:30
→ uncleuse:這樣的觀念對不對? 02/17 21:30
→ uncleuse:很感激大家的回答~~ 02/17 21:31
推 pinchieh:請看c primer 02/17 21:33
推 freehaha:的確是我解釋不周到:p 有謝Tom 指正, 推 02/18 02:19