C++11 是否支持可变大小的数组?

Does C++11 support variable sized arrays?

我是 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 是否支持可变大小的数组?或者,它是否只对我有用,因为我使用的是编译器?

我问这个问题是因为我不确定我朋友使用的是什么编译器,想将代码发送给他 运行。

非常感谢任何帮助。

在 C++ 中,应在编译时提供数组大小。对于可变大小的数组,使用 std::vector

那是非标准的 C++。一些编译器接受它,但如果你想要可移植,你应该坚持使用标准 C++。