作者cozychocolat (chocolate)
看板C_and_CPP
標題[問題] struct array傳遞問題
時間Wed Jan 10 03:02:48 2018
開發平台(Platform): (Ex: Win10, Linux, ...)
Windiw 7
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
CodeBlock
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
none
問題(Question):
我想要將一個結構陣列傳進副程式
並在副程式當中作一些判斷
但是當我傳入並想做一些簡單的測試時
就發生錯誤了
希各位大大能幫忙解惑
感恩
錯誤結果(Wrong Output):
錯誤資訊
no match for 'operator[]' (operand types are 'Maze' and 'int')
程式碼(Code):(請善用置底文網頁, 記得排版)
https://ideone.com/LE97Ei
補充說明(Supplement):
我 Maze maze[x+1][y+1] 的這種方式好像也不是很好
是否可教我改寫
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.1.226.182
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1515524572.A.9F9.html
1F:推 steve1012: 和不用 vector<vector<maze>>01/10 03:41
因為新手還是覺得array最直觀 哈哈
晚點來試試 vector
2F:→ kzeratal: 二維陣列是兩個星星01/10 04:04
但是我改成這樣
https://ideone.com/q3tsem
還是會有錯
錯誤訊息:cannot convert Maze (*)[(y + 1)] to‘Maze** for argument‘1' to‘
void check_consistent(Maze**, int, int)’
是不是跟我array大小是變動的有關
3F:推 chuegou: 用指標傳01/10 08:42
請問我這樣不是用指標傳嗎
還是我哪裡誤會了
4F:→ Killercat: 也許當初語法糖這東西真的害人不淺 XD01/10 09:53
5F:→ loveflames: 如果不用STL,可以傳陣列的reference01/10 15:10
但是據我所知 call by reference
他的陣列大小要是固定的
但是我的陣列大小是讓使用者隨機輸入的
這樣可以嗎
※ 編輯: cozychocolat (140.114.79.52), 01/10/2018 16:05:52
6F:→ loveflames: 隨機輸入就不是嚴格意義的陣列了,請用vector01/10 16:17
好的 我會試試
7F:推 steve1012: 雖然不知道你到底想要做啥 不過會動的code https://ide01/10 16:46
8F:→ steve1012: one.com/Cq75my01/10 16:46
真的是太感謝了 我會好好研究
※ 編輯: cozychocolat (140.114.79.52), 01/10/2018 16:56:40
9F:推 idiont: 傳array的時候只有最高維可以不用知道大小01/10 21:52
10F:→ loveflames: 因為那個實際上不是傳陣列,只是傳指標01/10 22:11
11F:推 dzwei: 你函數宣告要寫成01/13 02:11
12F:→ dzwei: void check_consistent(struct Maze (* maze)[10], 01/13 02:11
13F:→ dzwei: int y){ ... }01/13 02:11
14F:→ dzwei: 那個10是maze[a][b]裡面的b,也就是array外層的大小01/13 02:12
15F:→ dzwei: 參考本版C++新手13戒的第12條01/13 02:13
16F:→ dzwei: 之所以要寫成struct Maze (* maze)是因為沒有那個括號的話01/13 02:13
17F:→ dzwei: 就會變成(struct Maze *) maze01/13 02:14
18F:→ dzwei: 兩者意義完全不一樣01/13 02:14
19F:→ dzwei: 還有,我覺得check_consistent(maze, x, y);01/13 02:15
20F:→ dzwei: 應該要放在for裡面01/13 02:15
21F:→ dzwei: 其實前面x,y,num..那些沒有給初值,其實很危險01/13 02:16
22F:→ dzwei: 一樣參考本版教條的第一條01/13 02:17
感謝以上各位大師的講解 我後來就改用vector寫了 也謝謝dzwei大最後給的建議
感謝各位幫忙
※ 編輯: cozychocolat (106.1.226.182), 01/14/2018 03:16:15
23F:推 dzwei: 勘誤一下 01/14 03:53
24F:→ dzwei: 「maze[a][b]裡面的b」 01/14 03:53
25F:→ dzwei: 那個b是內層 01/14 03:53
26F:→ hunandy14: 真要傳多多維度的不定陣列,可以用樣板 01/24 11:34
28F:→ hunandy14: 總體來說還是跟上面大大一樣,建議用vector省事~ 01/24 11:36