joe*_*_04 1 c++ arrays size dynamic
出于某种原因,在过去,我记得无法做到这样的事情:
int arraySize;
cin >> arraySize;
int array[arraySize];
Run Code Online (Sandbox Code Playgroud)
但最近,我再次尝试了这一点,并没有引起任何问题.我之前可以发誓这是在我的编译器中引发错误的东西(macOS Sierra,Xcode 8.1).语言中的任何内容都已更新以允许此操作吗? - 我可能完全记错了,这不是以前的问题,但我不确定.我认为必须在编译期间定义数组大小,并且用户无法选择它(这是您实现动态数组的地方).
Vla*_*cow 17
C++标准不支持可变长度数组,尽管某些编译器可以拥有自己的语言扩展,允许在C++程序中使用VLA.
因此这段代码片段
int arraySize;
cin >> arraySize;
int array[arraySize];
Run Code Online (Sandbox Code Playgroud)
不符合C++.
而是使用标准C++类std::vector.
至于C,那么根据C标准实现可以有条件地支持VLA.
您可以检查实现是否支持VLA.来自C标准(6.10.8.3条件特征宏)
1以下宏名称由实现有条件地定义:
__STDC_NO_VLA__
整数常量1,用于指示实现不支持可变长度数组或可变修改类型.