c - 数组大小应该在编译时已知

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

最佳答案

此功能称为 VLA 或可变长度数组。并非所有 C 标准都支持这一点。在最近的 C 标准(如 C11C99)中,它受支持,但在较旧的 C 标准中不受支持,如“C89”。

如果您使用的是 gcc,请查看 compiler documentation对此。

关于c - 数组大小应该在编译时已知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27265584/

相关文章:

php - 不将字符串输出到文件

php - 代码点火器 3 : Insert array form to database

c# - Foreach本身会加倍或三倍

c++ - STL 容器的元素生命周期

c++ - 我是否需要删除传递给谷歌 Protocol Buffer (protobuf) 的对象?

c++ - 标记(在标记和扫描中)函数如何追踪出可从根部访问的对象集?

c - 生成正弦扫频波

c - GetProcessMemoryInfo PROCESS_MEMORY_COUNTERS_EX.PrivateUsage 始终为 0

c - 没有分号的语句没有错误

actionscript-3 - 任何 Haxe GC 提示?