【发布时间】:2019-05-19 02:59:20
【问题描述】:
我正在寻找定义一个二维字符数组,其中我传递给保存数组的函数的参数将用于确定数组每个维度的大小。
int func(const int x, const int y) {
char maze[x][y] = { 0 };
return 0;
}
当在函数内部将 x 和 y 定义为常量整数时,数组定义得很好。当 x 和 y 是函数的参数时,程序将无法编译。为什么会这样,我该如何解决?
【问题讨论】:
-
这在标准
c++中是不合法的。x和y都需要是编译时常量而不是函数参数。 -
由于大小不是编译时常量,所以需要一个动态数组。换句话说,
std::vector。 -
使用
std::vector<char> maze(x * y);。然后,不要像maze[pos_y][pos_x]那样使用它:maze[pos_x + pos_y * x]。 -
你可以使用
x和y的模板,但我认为这不是你要找的
标签: c++ arrays arguments 2d constants