生成一个整数数组

generating an integer array

本文关键字:一个 整数 数组      更新时间:2023-10-16

我是c++的新手,我想写一个程序来生成一个整数数组。总是在

行出现错误
test[i][j]=i;
invalid types 'int[int]' for array 
谁能告诉我这里出了什么问题?提前谢谢。
int main()
{
    int rows;
    int cols;
    cin>>rows>>cols;
    int test[rows][cols];
    get_test(rows,cols,&test[0][0]);
    cout<<test[1][1]<<endl;
    return 0;
}
int get_test(int rows,int cols,int *test)
{ 
    int h=rows;
    int w=cols;
    int i=0,j=0;
    for(i=0;i<h;i++)
    {
        for (j=0;j<w;j++)
        {
            test[i][j]=i;
        }
    }
    return 0;
}

int test[rows][cols];与非编译时间值是一个可变长度数组,这是一些编译器的可能扩展。

首选std::vector代替:

int get_test(std::vector<std::vector<int>>& test)
{ 
    for (int i = 0;i != test.size(); ++i)
    {
        for (int j = 0; j != test[i].size(); ++j)
        {
            test[i][j] = i;
        }
    }
    return 0;
}
int main()
{
    int rows;
    int cols;
    cin>>rows>>cols;
    std::vector<std::vector<int>> test(rows, std::vector<int>(cols));
    get_test(test);
    cout << test[1][1] << endl;
    return 0;
}

你的数组类型是错误的,你想要的是:

 int get_test(int rows,int cols,int **test)

这个问题必须处理你的数组声明:

int rows;
int cols;
cin>>rows>>cols;
int test[rows][cols];

编译器在编译时不知道整型的值。因此,它不知道在内存中分配多少空间。

尝试分配一堆空间,比您认为可能需要的更多,例如:

int rows = 100;
int cols = 100;
int test[rows][cols] //assumes a maximum of size 100 for each row & col

或者使用动态数组:

int **test = new int *[rows];
for(int i = 0; i < rows; i++)
test[i] = new int[cols];
相关文章: