作者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/cn.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