首页 > 解决方案 > 返回二维数组的函数声明中的 3 个错误

问题描述

这段代码

int[][] settile(int[][] field, int x, int y, bool player);

在头文件中给出以下错误:

expected an identifier

一开始[]

an array may not have elements of this type

在第二个[]

expected a ';'

settile. 错误在哪里,我该如何解决?

标签: c++arraysfunction

解决方案


简而言之:您不能以这些方式返回和传递二维数组。使用向量(或评论中建议的@foreknownas_463035818 的向量数组)。

数组是内存的线性部分。[]运算符通过某个偏移量在内存中取值。所以它等于arr[i] == *(arr + i)。对于 2D 数组,编译器需要知道除一维之外的所有维度,因此 compile 可以像这样使用它arr[i][j] == *(arr + i * N + j):当您在函数中传递数组时,您必须指定除一个(或您想要的所有)维度之外的所有维度的大小。IEvoid f(int a[][5]);

关于返回二维数组。C++ 中的数组不是一种类型,它是一种特殊的声明形式。所以回归int[][]是没有意义的。您必须使用某种包装器(例如std::arrayof std::vector),它将复制所有数据。


推荐阅读