数组大小和常量

alg*_*eks 7 c++ arrays

可能重复:
从另一个数组值初始化数组大小

在C++中

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

int main()
{
    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

代码在第2行给出错误; 但是,如果它是如下所示,它在编译后不会出错:

const int a=3; 
int b[a]; 

int main()
{
    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

这是为什么?但是,如果我在main中定义数组b,那么在两种情况下都是正常的......

Edw*_*nge 5

因为在C++中,数组大小必须是常量表达式,而不仅仅是常量数据.数组数据,即使是const,也不是常量表达式.

第二个版本是一个常量表达式.