正如C ++引言所说,我们不能使用变量作为内置数组的维度,因此下面的代码不起作用
int length = 3;
int array[length] = {0, 1, 2};
错误是
error: variable-sized object may not be initialized
但为什么以下代码有效?
int length = 3;
int array[length];
答案 0 :(得分:3)
这是您的编译器的扩展名为Variable Length Array (VLA),并且不在C ++标准中,这意味着在您切换编译器或编译器供应商决定不再支持此功能时,此代码可能会中断。如果你想要一个不依赖于这个扩展的可变长度数组,而是要使用标准,你应该使用std::vector
。