运行代码时出现此错误:
[错误]数组绑定在']'之前不是整数常量令牌
以下是代码的一部分:
using namespace std;
int R,C;
bool isSafer(int grid[][C],int row,int col, bool visited[][C])
{
if(row<R && row>=0 && col<C && col>=0 && grid[row][col] && visited[row][col])
{
return true;
}
return false;
}
int main()
{
....
....
cin>>R>>C;
int grid[R][C];
....
}
在int main()中,我向用户询问R和C的输入。我还在main函数中声明了数组,并在上面提到的函数中调用了。请建议我如何将我的数组传递给函数,并将参数作为用户采用的变量。
答案 0 :(得分:1)
C ++中没有可变长度数组。这意味着,遵循代码
int w, h;
std::cin >> w >> h;
int a[w][h];
是非法的。如果它适合您,那是因为您的编译器支持它作为扩展(作为不属于标准C ++的附加功能)。其他编译器可能不支持它。即使它适合你,你也无法将它传递给它。
有以下解决方案:
int
的1D数组,并分别传递宽度。我认为是最佳解决方案。new
的一维指针数组 - 分配int
的一维数组。并将其作为int **param
传递。constexpr int w = 5; int *a[w] = new int[h][w];
的操作。如果您需要更改这两个尺寸,则无法使用。