【问题标题】:Variable-sized object may not be initialized problem in array数组中的可变大小对象可能未初始化问题
【发布时间】:2020-04-24 13:05:37
【问题描述】:

当我尝试运行这个简单的代码时,它返回一个 Variable-sized object may not be initialized 错误。我不知道为什么以及如何解决这个问题。

int main()
{
    int n=0;
    n=1;
    int a[n]={}, b[n]={};
    return 0;
}

【问题讨论】:

标签: c++ c++11


【解决方案1】:

数组长度必须在编译时知道。 要么

int a[1];

constexpr int n = 1;
int a[n];

否则你需要像 std 容器 std::vector 这样的动态数组。

【讨论】:

    【解决方案2】:

    您可以使用std::fill_n 正确初始化您的数组,例如:

    std::fill_n(a, n, 0);
    std::fill_n(b, n, 0);
    

    或使用std::vector 喜欢:

    std::vector<int> a(n);
    

    默认将所有元素初始化为0。

    或者,你可以有类似的东西:

    constexpr size_t n = 10;
    int a[n]{};
    

    这也会将所有元素初始化为 0。

    【讨论】:

      【解决方案3】:

      试试这个:

      const int n=1;
      
      int main()
      {
          int a[n]={}, b[n]={};
          return 0;
      }
      

      上面的代码可以让你创建一个长度为 n 的数组。 注意:n 不能更改。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-21
        • 2021-07-19
        • 1970-01-01
        • 2017-03-06
        • 1970-01-01
        相关资源
        最近更新 更多