代码之家  ›  专栏  ›  技术社区  ›  RSSB

c++11中的数组维度[重复]

  •  2
  • RSSB  · 技术社区  · 6 年前
    void method(string a) {
      int n = a.size();
      int array[n];
    }
    

    上面的代码可以使用gcc正确编译。数组的大小怎么可能来自一个非常量变量?编译器是否自动翻译 int array[n] int* array = new int[n]

    0 回复  |  直到 11 年前
        1
  •  6
  •   Benjamin Lindley    8 年前

    目前,因为编译器有非标准扩展,允许在C++程序中使用C的可变长度数组。

    编译器是否自动翻译 int array[n] int* array = new int[n] ?

        2
  •  0
  •   Ilmirus    11 年前

    根据 this 编译器允许C++中的表达式,如C90/99。

        3
  •  0
  •   Jacob Minshall    11 年前

    new 关键字将使用指针和一些分配来完成此操作。

    int * ptr;
    int n = a.size();
    ptr = new int[n];