【发布时间】:2016-03-15 16:22:09
【问题描述】:
我对数组初始化的幕后发生了什么感到困惑。
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
我的理解是:
第一个 sn-p,n 个元素已分配但未初始化。第二个分配n个元素并将它们初始化为{1, 2, 3}。两者都做几乎相同的事情,但为什么第二个会导致错误。
请澄清我的理解或给我一些资源(我已经尝试过,但找不到接近的答案)。
编译器:mingw32-g++
【问题讨论】:
-
错误是什么?你用的是什么编译器?
int a[n];不是标准的,不应编译。 -
VLA 不是标准的,尽管 GCC 默默支持它们
标签: c++ arrays initialization