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++。
我是 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++。