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

I'm trying to make a function that initializes a 2D array in C++

本文关键字:函数 一个 初始化 2D C++ 数组 创建      更新时间:2023-10-16

IDE在我尝试编译时给我这个错误:

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

我可以在我的主函数中执行此操作,但是我想通过调用一个可以初始化任何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];
        }
    }
}

实际上

int& arr[x][y]

(我删除了x和y的语法不正确类型的指定词)是指向参考数组的指针的声明。C 不允许声明参考的数组。

正确的声明将为

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

规定x和y定义为常数。

笑一边,您的功能原型非常被弄脏。

您需要更多类似的东西:

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

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

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

另外,帮自己一个忙,使您的外循环y和内部循环x,这并不重要,但它使其可视化更容易。

编辑: 正如Ed S.友善而准确地指出的那样,使用X作为您的内部循环在数据局部性方面确实很重要。习惯于以这种方式这样做。

相关文章: