const限定符和数组

Luc*_*uca 2 c++ arrays const

我正在学习C++而且我对数组有疑问(我还在研究这个主题,有些事情很清楚,而有些事情对我来说似乎有些模糊).我想知道这些声明是否合法,如果是,它们如何影响新创建的数组:

让我们假设我想创建一个int数组(以保持简单):

我知道以下是合法的

int array[size];
Run Code Online (Sandbox Code Playgroud)

其中size是常量表达式

还有这个

const int array[size];
Run Code Online (Sandbox Code Playgroud)

这个声明意味着我可以读取 - 访问数组中的元素,但我不能分配给它们(int a=array[2]是合法的,array[1]=10是一个错误).

怎么样的"顶级"const喜欢

int const array[size];
Run Code Online (Sandbox Code Playgroud)

要么

const int const array[size];
Run Code Online (Sandbox Code Playgroud)

他们首先是合法的吗?如果是这样,他们是什么意思?不是一个数组常量本身,是不可能分配给一个数组或复制初始化一个?

谢谢!

编辑:

我知道什么是"顶级"和"低级"const意味着(虽然我知道我可以在基本类型说明符之前和之后放置const限定符,但不会改变任何东西).我想知道的是如何定义一个const数组(我的意思是不是一个const对象或变量数组)改变了一些东西.

Dee*_*epu 5

以下两个陈述是有效和平等的,

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

int const a[5]={1,2,3,4,5}; 
Run Code Online (Sandbox Code Playgroud)

这是初始化常量数组的方法.

以下声明为您提供语法错误.

const int const a[5];
Run Code Online (Sandbox Code Playgroud)