C++ 使用变量作为参数将多维数组传递给函数
很抱歉,如果这真的很容易解决或者是一个愚蠢的问题,但我最近才开始编程 基本上,在void main()中,我声明了一个2D数组,如下所示:C++ 使用变量作为参数将多维数组传递给函数,c++,arrays,function,multidimensional-array,parameter-passing,C++,Arrays,Function,Multidimensional Array,Parameter Passing,很抱歉,如果这真的很容易解决或者是一个愚蠢的问题,但我最近才开始编程 基本上,在void main()中,我声明了一个2D数组,如下所示: void main() { const int grid = 5; array[grid][grid]; { 但是,我想将其传递到如下函数: void drawGrid(int grid, bool array[][]) { } 这将创建一个错误,因为第二个参数需要有一个数字。但这是一个问题,因为我主要使用变量声明数组 void drawGri
void main()
{
const int grid = 5;
array[grid][grid];
{
但是,我想将其传递到如下函数:
void drawGrid(int grid, bool array[][])
{
}
这将创建一个错误,因为第二个参数需要有一个数字。但这是一个问题,因为我主要使用变量声明数组
void drawGrid(int grid, bool array[grid][grid])
{
}
将变量放入参数中不起作用
在参数中使用int变量网格时,如何将数组传递给此函数
我已经搜索了很多,并查看了与我有类似问题的人的答案,但我似乎不知道具体该怎么做。谁能告诉我如何解决这个问题,我会非常高兴,因为我已经努力解决这个问题将近两个小时了。谢谢。您可以使用大小作为模板参数的函数模板
template <size_t grid>
void drawGrid(bool array[][grid])
{
}
或
drawGrid(数组);
错误消息是什么?无论如何,我认为这只是一个简单的范围界定问题。只需将网格
放在全局范围内。@cad“数组可能没有这种类型的元素”是指如果将参数保留为空。若你们把网格放在那个里,它肯定是一个范围问题。但是我不想全局声明这个变量(在我的课程中我们也不允许这样做),所以我必须用其他方式来做。如果这个方法正确的话,谢谢你,但是我只想知道函数模板与普通函数有何不同?是否没有办法将网格传递到普通函数中?在函数模板中,必须在编译时知道大小。因此,bool数组[][grid]
是一个有效的声明。在常规函数中,直到运行时才知道大小。因此,bool array[][grid]
不是有效的声明。好的,非常感谢,我现在明白了@Roixen注意,您可以同时指定这两个维度。这里的示例将接受所有N
值的bool[N][grid]
。
drawGrid(array);
drawGrid<grid>(array);