【发布时间】:2014-12-14 00:49:39
【问题描述】:
我昨天刚做了一个实验,发现有些混乱:
#include <stdio.h>
int main()
{
int j;
scanf("%d",&j);
const int i = j;
int arr[i];
return 0;
}
从键盘读取数字j,用于在堆栈上分配数组arr。
编译器在编译时甚至不知道数组的大小(将j初始化为0?),但没有编译错误。怎么可能?
【问题讨论】:
-
事实上你应该澄清为什么你认为编译器应该给出一个错误
-
在本站搜索
[c] VLA。 -
我想你一直在学习c89..
-
作为旁注,通过附加变量
i是没用的,没有代码也可以。 -
由于添加了 C11 标签,请注意 C11 引入的 VLA 支持可选。
__STDC_NO_VLA__类对象宏设置为1如果具体实现不处理它们。
标签: c c99 c11 variable-length-array