常量对象的常量数组

发布于 2024-12-07 18:29:07 字数 296 浏览 1 评论 0原文

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

我可以定义

int const Array [] = {
    /* init data here */
};

,但这是一个常量对象的非常量数组。

我可以使用

int const * const Array = {
    /* init data here */
};

并且它可能会起作用。 但是可以使用数组语法来做到这一点吗? (这样看起来更干净)

How do you define constant array of constant objects in C (not C++)?

I can define

int const Array [] = {
    /* init data here */
};

but that is a non-constant array of constant objects.

I could use

int const * const Array = {
    /* init data here */
};

and it would probably work.
But is it possible do this with array syntax? (Which looks more clean)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

記柔刀 2024-12-14 18:29:07

数组不能是“常量”——这是什么意思?无论如何,数组大小已经是编译时常量,如果所有成员都是常量,那你还想要什么呢?您试图排除 const int[] 可能发生哪种突变?

An array cannot be "constant" -- what is that even supposed to mean? The array size is already a compile-time constant in any case, and if all the members are constants, then what else do you want? What sort of mutation are you trying to rule out that is possible for a const int[]?

恰似旧人归 2024-12-14 18:29:07

“双重常量”仅适用于指针,因为它们可以更改为指向其他内容1,因为数组的特征本身是静态的(数组的大小/类型/指向的内容不能更改)到其他东西)唯一可以应用的 const 是它们的元素。


  1. 所以你有“指向 int 的指针”、“指向常量 int 的指针”、“指向 int 的常量指针”、“指向常量int的常量指针”。

The "double constness" thing applies only to pointers because they can be changed to point to something else1, since the characteristics of arrays are statical by themselves (arrays cannot be changed in size/type/to point to something else) the only const you can apply is to their elements.


  1. so you have the variations "pointer to an int", "pointer to a constant int", "constant pointer to an int", "constant pointer to a constant int".
与风相奔跑 2024-12-14 18:29:07

如果你希望数组的元素不被修改,只需使用:

const int Array[];

If you want the elements of array do not modify, just use this:

const int Array[];

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文