从何时开始使用可变长度数组?

sas*_*har 1 c arrays memory-management dynamic-memory-allocation

请告诉我为什么以下代码甚至在以下代码上运行strict C-99 compiler:

#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int a[n];
    a[1]=10;
    a[2]=5;
    printf("%d %d",a[1],a[2]);
}
Run Code Online (Sandbox Code Playgroud)

变量声明必须在C中的任何其他语句之前发生吗?如果我们想要一个动态分配的数组,我们必须使用内存分配函数,malloc()但它是如何获取和输入整数并分配该大小的数组?

Pra*_*mar 5

这称为可变长度数组,并受C99标准支持.
这在C89或任何版本的C++中都不起作用.

  • 如果"它"意味着使用非常量表达式来分配可变长度数组,那么不.如果"它"意味着混合声明和声明,那么是的. (2认同)