我是C ++的新手,但我一直在研究,普遍的回答是:C ++ 11不支持可变大小的数组,因为数组大小需要为常量表达式。
但是,我已经在XCode 11(C ++ 11)上尝试了以下代码:
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
unsigned long arrayS;
cin >> arrayS;
bool a[arrayS];
return 0;
}
而且完全可以。当我在
bool a[arrayS];
我可以看到数组a具有arrayS元素。我已经用
*(&a + 1) - a
它表明a中的元素数是arrayS。
c ++ 11是否支持可变大小的数组?还是仅因为我使用的编译器对我有用?
我问这个问题是因为我不确定我的朋友正在使用哪个编译器,并想将代码发送给他运行。
任何帮助深表感谢。
In c++, array size should be supplied at compile time. For variable sized arrays use
std::vector
那是非标准的C ++。一些编译器接受它,但是如果您希望可移植,则应该坚持使用标准C ++。