动态数组大小分配

时间:2015-09-26 14:47:36

标签: c mingw codeblocks

我在C中编写了以下代码。由于无法动态分配数组大小,因此我预期会出现错误消息。但代码编译。但是myArray1的结果大小是荒谬的。我不确定它为什么编译。我正在使用codeblock和minGW。

   int a;
    printf("Enter the value for a\n");
    scanf("%d",&a);
    int myArray2[a];
    printf("value of a = %d\tSize of myArray1 = %d",(sizeof(myArray2)/sizeof(myArray2[0])));

1 个答案:

答案 0 :(得分:2)

C99标准支持堆栈上的可变大小的数组。

以下是gcc docs

  

ISO C99允许使用可变长度自动数组,作为扩展,GCC在C90模式和C ++中接受它们。这些数组的声明与任何其他自动数组一样,但其长度不是常量表达式。存储在声明点分配,并在包含声明的块作用域退出时解除分配。