0

当我尝试编译时,IDE 给了我这个错误:

random.h|11|error: expected ',' or '...' before 'arr'|
除其他外,但这是我最大的问题。

我可以在我的主函数中做到这一点,但我想通过调用一个函数来初始化我给它的任何二维数组。然后我有另一个打印数组的函数,但它们或多或少是相同的,除了语句。我是一个完整的初学者,所以请随意笑几声!

    void InitializeArray2D(int& arr[int x][int y])
{
    for (int i=0; i<x; i++)
    {
        for(int j=0; j<y; j++)
        {
            cout<<"arr["<<i<<"]["<<j<<"]=";
            cin>>arr[i][j];
        }
    }
}
4

2 回答 2

1

实际上

int& arr[x][y]

(我删除了 x 和 y 的语法错误类型说明符)是指向引用数组的指针的声明。C++ 不允许声明引用数组。

正确的声明将是

void InitializeArray2D(int ( & arr )[x][y]);

前提是 x 和 y 被定义为常数。

于 2014-01-30T21:21:17.077 回答
0

笑而不语,您的函数原型非常混乱。

你会想要更多类似的东西:

void InitializeArray2D(int &arr[][], int x, int y) {
}

或者

void InitializeArray2D(int **arr, int x, int y) {
}

注意:这假设您的数组已经分配

另外,帮自己一个忙,让你的外环 y 和内环 x,并不是说这很重要,但它使可视化变得更容易。

编辑:正如 Ed S. 亲切而准确地指出的那样,使用 x 作为内部循环在数据局部性方面确实很重要。尽早习惯这样做。

于 2014-01-30T21:15:23.197 回答