我在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])));
答案 0 :(得分:2)
C99标准支持堆栈上的可变大小的数组。
以下是gcc docs:
ISO C99允许使用可变长度自动数组,作为扩展,GCC在C90模式和C ++中接受它们。这些数组的声明与任何其他自动数组一样,但其长度不是常量表达式。存储在声明点分配,并在包含声明的块作用域退出时解除分配。