为什么可以在C ++中声明大小可变的数组

时间:2019-06-06 22:07:19

标签: c++ arrays g++

我一直认为,在编译时必须知道c ++中数组的大小。但是,最近我遇到了这样的代码

#include <iostream>

int main(){
  int n;

  std::cout << "n: ";
  std::cin >> n;

  int array[n + 1];
  for(int i = 0; i <= n; i++)
    array[i] = i * i;

  for(int i = 0; i <= n; i++) {
    std::cout << array[i] << " ";
  }

  std::cout << std::endl;

  return 0;
}

令我惊讶的是,它编译时没有错误,甚至可以正常工作。

cpp$ g++ c_scr.cpp -o c_scr
cpp$ ./c_scr 
n: 7
0 1 4 9 16 25 36 49 

这是怎么回事?我正在使用g ++ 7.4.0

0 个答案:

没有答案