我有一个函数,想要返回一个二维数组:
int flip[5][5](int input[5][5]);
但它返回一个错误:不允许函数错误(这是翻译)
我该如何解决这个问题?
这有效:
void flip(int input[5][5]);
答案 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中的容器。