int n=5;
int arr[n];
我想在C ++中声明上面的数组大小,但是在编译时我遇到了错误。我在互联网上发现很多代码使用这些类型的声明而不是简单的放置int arr[5]
。为什么代码为他们成功编译但不适合我。 P.S:我使用的是windows7和Visual Studio(IDE)。
错误消息:Expresion必须具有常量值
答案 0 :(得分:3)
数组的元素数量(数组绑定)必须是常量表达式。
你必须使用
const int n = 5;
或
constexpr int n = 5;
否则它是非标准扩展名:可变长度数组(VLA)。
答案 1 :(得分:3)
错误消息实际上描述了正在发生的事情:C ++不支持具有非常量大小的数组(更确切地说,大小需要在编译时知道)。
有两种解决方案:
如果大小实际上是常量,请将其声明为constexpr
(如果您不能使用C ++ 11,也可以使用const
):
constexpr int n = 5;
std::array<int, n> arr;
这需要标准标题<array>
。或者,如果您不能使用C ++ 11,请将第二行更改为
int arr[n];
如果在编译时未知大小,请不要使用静态数组,而是使用动态容器:
int n = 5;
std::vector<int> arr(n);
这需要<vector>
标准标题。