数组大小应在编译时知道

时间:2014-12-03 07:03:49

标签: 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;
}

1 个答案:

答案 0 :(得分:6)

此功能称为VLA或可变长度数组。并非所有C标准都支持此功能。在最近的C标准中,例如C11C99,它受到支持,但在较旧的C标准中却不支持'C89'。

如果您使用的是gcc,请查看有关此问题的compiler documentation