我正在尝试创建一个在C ++中初始化2D数组的函数

时间:2014-01-30 21:10:17

标签: c++ arrays function initializing

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

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

我可以在我的main函数中执行此操作,但我想通过调用一个函数来完成它,该函数将初始化我给它的任何2D数组。然后我有另一个打印数组的函数,但它们或多或少是相同的东西,除了语句。 我是一个完全的初学者,所以请随意笑几声!

    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];
        }
    }
}

2 个答案:

答案 0 :(得分:1)

实际上

int& arr[x][y]

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

正确的声明将是

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

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

答案 1 :(得分:0)

撇开,你的功能原型非常糟糕。

你会想要更像的东西:

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

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

注意:这假设您的阵列已经分配

另外,帮自己一个忙,让你的外环y和内环x,而不是那么重要,但它使它更容易可视化。

编辑:    正如Ed S.友好而准确地指出的那样,使用x作为内部循环在数据局部性方面很重要。习惯这样做早点而不是以后。

相关问题