生成整数数组 我是C++的新手,我想编写一个程序来生成整数数组。我总是在第一线发现错误 test[i][j]=i; invalid types 'int[int]' for array

生成整数数组 我是C++的新手,我想编写一个程序来生成整数数组。我总是在第一线发现错误 test[i][j]=i; invalid types 'int[int]' for array,c++,visual-c++,C++,Visual C++,谁能告诉我这里怎么了?提前谢谢 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 *

谁能告诉我这里怎么了?提前谢谢

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;
}
intmain()
{
int行;
int cols;
cin>>行>>列;
int测试[行][cols];
get_测试(行、列和测试[0][0]);

cout您的数组类型错误,您需要如下内容:

 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];
int**test=新的int*[行];
对于(int i=0;i
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_测试(标准::向量和测试)
{ 
对于(int i=0;i!=test.size();++i)
{
对于(int j=0;j!=test[i].size();++j)
{
试验[i][j]=i;
}
}
返回0;
}
int main()
{
int行;
int cols;
cin>>行>>列;
标准::向量测试(行,标准::向量(cols));
获取_测试(test);

cout
int-get\u-test(int-rows,int-cols,int*test)
不要认为测试是1d数组。注意,不需要指定数组的第一个元素,只需
get\u-test(rows,cols,test)
n与数组数组相比,通常最好在向量周围使用一个小包装器,例如在中发布的向量。有些库(例如)包含相同思想的实现,因此如果您不想编写一个,就可以很容易地使用它们(尽管对于一项如此琐碎的任务,我发现使用库的好处非常小)我不认为多维VLA可以通过这种方式。这是错误的,即使你忽略了它事实上促进了编写真的很差的代码。多维数组不能用作指针的指针。为什么你分配的比你认为的要多?这个人显然是C++初学者。我只想给你。em是他们问题的简单快捷的答案。不必使用动态向量等给出复杂的解决方案。他们稍后将了解更多关于更好的内存分配的信息。对于本例,这是一个可以接受的答案。向量是“简单快捷的答案”.手动内存管理及其所有缺陷都非常复杂,在这种情况下,您实际上是在教授错误(例如,大量内存泄漏!)。这怎么可能是合理的?!