→ dendrobium:我猜編譯器的錯誤訊息應該很清楚,只是你沒去看 12/01 18:30
→ conan77420:ptr1的部分,雙指標要先指到指標,然後才能給地址嗎? 12/01 18:42
→ conan77420:編譯器只說這樣不行實行 0.0 12/01 18:43
→ conan77420:當然他有講初值化的動作不行,但這樣我還是不知道原因 12/01 18:44
→ dendrobium:簡單的來說,這兩個的變數的型態是不一樣的 12/01 18:47
→ dendrobium:一個是 int (*)[2] 另一個是 int** 12/01 18:48
推 snowlike:2. 括號表一指標指向一維且大小為2的陣列;該例&ary[0~2] 12/01 19:08
→ snowlike:3. *(*ptr3+1)==*(*(ptr3+0)+1)==ptr3[0][1];僅替換內容 12/01 19:08
所以ptr3是一個一維指標,指向array的開頭位置?
那等同於的ptr3[0][1]是哪裡來的?這樣不就超過存取記憶體範圍?
推 stonehomelaa:int **ptr1=array; 哪本書這樣寫的?? 12/01 20:27
→ netsphere:int **ptr1=array[0] <- 書上比較有可能這樣寫 12/01 20:30
其實這是97年高考資訊的題目,不過他出題似乎筆誤很多
而且真的可以寫**ptr1=array[0]嗎?
※ 編輯: conan77420 來自: 61.229.123.147 (12/01 20:49)
→ netsphere:不能 我想錯了 12/01 20:54
→ conan77420:這個**ptr1=array是要表達什麼意思呀,完全不懂囧 12/01 20:56
推 stonehomelaa:當然不能表達什麼 因為完全錯了呀 12/01 21:04
推 snowlike:是指向一維;也就是ary[2][0~1],可使用ptr[-2~0][0~1] 12/01 21:19
→ snowlike:=&array[2]容易錯認,也可以&array[0]或是&array[1] 12/01 21:21
→ snowlike:另外對指標的認知上是指向ary某處,自然有[3][2]合法範圍 12/01 21:23
推 VictorTom:int **ptr1=array; // 在C語言是可以過的喔, 不過還是會 12/01 22:04
→ VictorTom:發warning警告type不match; C++就比較嚴格, 會要求自己 12/01 22:04
→ VictorTom:寫好顯示轉型才讓你過:) 12/01 22:04