gpt4 book ai didi

创建 const 元素的 const 数组

转载 作者:太空狗 更新时间:2023-10-29 14:50:55 25 4
gpt4 key购买 nike

我想声明一个常量字符数组的常量数组。如果我这样写:

const char foo[] = "Foo";
const char bar[] = "Bar";
const char* const foobar[2] = { foo, bar };

它似乎有效,但如果我尝试使用 "the spiral rule" 阅读它, foobar 读作:

“foobar 是一个常量 (??) 指向 char 常量指针的数组 2”

使用这个 stack overflow回答,

const applies to the thing left of it. If there is nothing on the left then it applies to the thing right of it.

第一个 const 将应用于字符,第二个 const 也将应用于相同的字符。

两种阅读方式都没有意义,但代码确实起作用(至少在 Arduino [抱歉] 中)。哪个 const 使哪个成为常量?有没有更合乎逻辑的写法?

最佳答案

正如您所说:

const applies to the thing left of it. If there is nothing on the left then it applies to the thing right of it.

const char* const foobar[2] = { foo, bar };

可以重写为:

char const * const foobar[2] = { foo, bar };

现在想象一下封装 const 限定符和限定实体的括号:

((char const) (* const)) foobar[2] = // doesn't matter

您已经写过第二个常量也适用于相同的字符。这不是真的 - 第二个 const 引用 *,这意味着它是一个常量指针。

总而言之,foobar 是指向常量字符的常量指针数组

您可能还想阅读此主题:constant pointer vs pointer on a constant value .

关于创建 const 元素的 const 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28320538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com