使用const int作为数组大小

Agn*_*ian 2 c++ arrays const

为什么我能够使用本地声明const int的数组声明的大小但是不允许对const int作为参数传递的方法执行相同操作?

例如,在下面的代码中,为什么我只在第2行遇到编译器错误?

void f1(const int dim){
  int nums[dim];  // line 2: errors
}

void f2(){
  const int dim = 5;
  int nums[dim];  // ok
}
Run Code Online (Sandbox Code Playgroud)

Jar*_*d42 5

数组大小应在编译时知道.

const int 如果在编译时未知该值,则局部变量可能不起作用:

void f2(){
  const int dim = bar();
  int nums[dim];  // error
}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,都const int告诉该值不会改变,而不是在编译时知道它.