在C++中定义二维数组

Defining 2D array in C++

本文关键字:二维数组 定义 C++      更新时间:2023-10-16

根据我的理解,我们需要在c++中为2d数组定义一个常量行和一个常量列大小,除非我们正在动态分配它。

我尝试了这段代码,它没有任何错误。

    std::vector<std::string> strs;
    for(int i ; i < 10; ++i)
    {
       strs.push_back("This is a test"+ std::to_string(i)); 
    }
    int length = 0;
    for(int i ; i < 10; ++i)
    {
       if(strs[i].size() > length)
           length = strs[i].size();
    }
    char c[20][length + 1];
    for(int i ; i < 20; ++i)
    {
       memcpy(c[i], "Test", 5);
       cout << c[i] << endl;
    }

有人能解释一下为什么在这里定义一个可变长度的2D字符数组是可能的吗?

谢谢K

char c[20][length + 1];

如果length不是编译时常数,则不是合法的C++。某些编译器,如g++,允许将其作为扩展。