生成整数数组

时间:2014-07-14 13:40:40

标签: c++ visual-c++

我是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;
}

3 个答案:

答案 0 :(得分:11)

具有非编译时间值的

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

答案 1 :(得分:-2)

你的数组类型错误,你需要类似的东西:

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

答案 2 :(得分:-3)

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

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