数组大小应在编译时知道

rah*_*shr 1 c arrays memory-management static-memory-allocation

我写了一个简单的代码,我在创建没有固定大小的数组.我尝试编译代码gcc,它工作正常.请解释为什么这个工作数组大小应该在编译时知道.

这是我用过的代码.

void f(int k)
{
   int a[k];
   .....//some operation
}

int main()
{
  int i = 10;
  f(10);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

Nat*_*tta 6

此功能称为VLA可变长度数组.并非所有C标准都支持此功能.在最近的C类标准像 C11C99,它是支持的,但不是在旧的C类标准为"C89".

如果您正在使用gcc,请查看有关此内容的编译器文档.