函数返回数组C ++

时间:2015-11-27 16:03:34

标签: c++ arrays multidimensional-array

我有一个函数,想要返回一个二维数组:

int flip[5][5](int input[5][5]);

但它返回一个错误:不允许函数错误(这是翻译)

我该如何解决这个问题?

这有效:

void flip(int input[5][5]);

3 个答案:

答案 0 :(得分:1)

在此功能声明中

void flip(int input[5][5]);

该参数被隐式调整为指向数组第一个元素的指针。所以实际上函数声明看起来像

void flip(int ( *input )[5] );

您可能无法返回数组,因为数组没有复制构造函数。

如果数组本身不是函数的局部变量,则可以通过引用返回数组。

例如,如果您的funciotn通过引用获取数组,那么您可以从函数返回此数组。

例如

int ( & flip(int ( &input )[5][5]) )[5][5];

您可以将数组包装在一个结构中,并将该结构与数组一起返回。

例如

struct data
{
    int a[5][5];
};

data flip( int input[5][5] );

答案 1 :(得分:1)

使用std::array<std::array<int, 5>, 5>代替内置数组类型。

答案 2 :(得分:1)

返回数组的语法很难看。你最好使用typedef或auto。

auto flip(int input[5][5]) -> int[5][5];

但是你遇到的问题是,你没有将数组作为引用或指针传递给函数,这将无效。

typedef int myArray[5][5];

void foo(myArray& arr) {
    //do stuff
}

int main() {
    int arr[5][5];
    foo(arr);
    return 0;
}

顺便说一句,使用像这样的数组是单调乏味的,你最好使用STL中的容器。