当多维数组具有动态边界时,如何通过引用传递该数组



我有一个int数组myArray[x][y],我希望通过引用将其传递给函数,但它似乎需要常量边界或一些奇怪的指针解决方法?我该如何正确地做到这一点?

具有自动存储持续时间的数组总是需要编译时常数边界。在x不是GCC中的编译时常数的情况下,可以执行int array[x];,这只是一个不可移植的扩展。实际上,不能通过引用函数来传递这样一个非标准数组。

您可以将边界与数组一起传递,但最好使用标准容器(如std::vector)。

尝试:

template<int X, int Y>
void ArrayFn( int (&in)[X][Y] )
{
    in[X-1][Y-1] = 666; // or whatever
}

并称之为:

int arr[3][3];
ArrayFn( arr );

最新更新