带有const表达式的数组声明

时间:2014-03-04 01:03:08

标签: c++ arrays initialization

我试图在全局范围内声明一个具有const值的数组,如下所示。但它给出了编译错误,说数组大小不是const值。

const int a[] = {1, 2, 3, 4, 5};

int arr[a[1]];

但是如果我将相同的行复制到一个函数中,它工作正常。

当我尝试声明全局数组时,能告诉我这些差异及其失效的原因。

1 个答案:

答案 0 :(得分:4)

如果您的编译器支持C ++ 2011 Standard的新说明符constexpr,请尝试

constexpr int a[] = {1, 2, 3, 4, 5};

int arr[a[1]];

至于在将代码放入函数时编译代码,那么这样的代码不符合C ++。它是您正在使用的编译器的语言扩展。数组的大小应该是编译时已知的常量表达式。

在C中,您可以使用可变长度数组(VLA)。一些编译器在C ++中包含了C标准的这一特性。