0
我对背后的场景的数组初始化有什么困惑。编译时数组初始化与非常量变量的大小
int n= 3;
int a[n]; // compile succeeds
但是,从代码块
int n = 3;
int a[n] = {1, 2, 3}; // compile error
错误消息:
error: variable-sized object 'a' may not be initialized
我的理解是: 第一个片段,n个元素被分配但是没有初始化。第二个分配n个元素并将它们初始化为{1, 2, 3}
。两者都做几乎相同的事情,但为什么第二个导致错误。
请澄清我的理解或给我留下一些资源(我试过了,但找不到密切的答案)。
编译器:的mingw32-G ++
什么是错误?你使用什么编译器? 'int a [n];'不是标准的,不应该编译。 – NathanOliver
尽管GCC支持它们,但VLA并不标准 – ftynse