企业名称:桐城市南口新型建材有限公司
联系人:崔经理
电话:0556-6568069
手机:18156911555
邮箱:303927413@qq.com
地址:桐城市龙腾街道高桥村
网址: www.nkxxjc.com
企业名称:桐城市南口新型建材有限公司
联系人:崔经理
电话:0556-6568069
手机:18156911555
邮箱:303927413@qq.com
地址:桐城市龙腾街道高桥村
网址: www.nkxxjc.com
出于某种原因,在过去,我记得无法做到这样的事情:
int arraySize; cin >> arraySize; int array[arraySize];但最近,我再次尝试了这一点,并没有引起任何问题.我之前可以发誓这是在我的编译器中引发错误的东西(macOS Sierra,Xcode 8.1).语言中的任何内容都已更新以允许此操作吗? - 我可能完全记错了,这不是以前的问题,但我不确定.我认为必须在编译期间定义数组大小,并且用户无法选择它(这是您实现动态数组的地方).
1> Vlad from Mo..:
C++标准不支持可变长度数组,尽管某些编译器可以拥有自己的语言扩展,允许在C++程序中使用VLA.
因此这段代码片段
int arraySize; cin >> arraySize; int array[arraySize];不符合C++.
而是使用标准C++类std::vector.
至于C,那么根据C标准实现可以有条件地支持VLA.
您可以检查实现是否支持VLA.来自C标准(6.10.8.3条件特征宏)
1以下宏名称由实现有条件地定义:
__STDC_NO_VLA__
整数常量1,用于指示实现不支持可变长度数组或可变修改类型.
2> 小智..:
语言中的任何内容都已更新以允许此操作
不可变长度数组(又称VLA)是编译器特定的扩展.
c ++标准从未允许这样做(不像c99标准那样反过来).