C 常量对象的常量数组

C 常量对象的常量数组,c,arrays,constants,C,Arrays,Constants,如何在C(不是C++)中定义常量对象的常量数组 我可以定义 int const Array [] = { /* init data here */ }; 但这是一个由常量对象组成的非常量数组 我可以用 int const * const Array = { /* init data here */ }; 这可能会奏效。 但是否可以使用数组语法来实现这一点?(看起来更干净)双常量只适用于指针,因为它们可以更改为指向其他对象1,因为数组的特性本身是静态的(数组不能更改大小/类型/

如何在C(不是C++)中定义常量对象的常量数组

我可以定义

int const Array [] = {
    /* init data here */
};
但这是一个由常量对象组成的非常量数组

我可以用

int const * const Array = {
    /* init data here */
};
这可能会奏效。 但是否可以使用数组语法来实现这一点?(看起来更干净)

双常量只适用于指针,因为它们可以更改为指向其他对象1,因为数组的特性本身是静态的(数组不能更改大小/类型/指向其他对象)。唯一可以应用的
常量是它们的元素


  • 因此,您有“指向
    int
    的指针”、“指向常量
    int
    的指针”、“指向
    int
    的常量指针”、“指向常量
    int
    的常量指针”等变体

  • 数组不能是“常量”——这是什么意思?数组大小在任何情况下都已经是编译时常量,如果所有成员都是常量,那么还需要什么?您试图排除常数int[]
    可能发生的哪种突变?

    如果您希望数组的元素不被修改,请使用以下方法:


    const int数组[]

    我想你把这和指针混淆了。指针可以是常量,也可以指向常量数据,或者两者都指向。还要注意的是,
    int-const
    const-int
    是完全等效的表达式,为了让程序员感到困惑,标准允许这两种表达式。我喜欢C。我想说数组不可能是常数是令人困惑的。更有用的说法是数组总是常量。对于新手来说,数组的行为似乎很像指针,但与指针不同的是,将数组放在赋值的左侧是非法的。这实际上不是一个答案。你的问题的答案可以在