gpt4 book ai didi

c++ - C 字符串数组初始化 - 这是可变的吗?

转载 作者:可可西里 更新时间:2023-11-01 16:27:29 24 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Modifying C string constants?
Pointer to const char vs char array vs std::string

我知道我可能在这个问题上打败了死马,但我有点困惑,我还没有设法在 SO 或谷歌上找到确切的答案(我有信心是正确的 - 只有关于 C 字符串的信息太多,无法筛选)。此外,我将其标记为 C++,因为这是我感兴趣的内容,即使我们专门讨论 C 风格的字符串也是如此。

在这种情况下:

char const a*  = "hello";
char const b[] = "goodbye";

我原以为“hello”和“goodbye”都是不可变的字符串,因为它们来自应该衰减为 char const* 的字符串文字。

不过我已经看到,在这种特殊情况下,更改“hello”将是未定义的,而更改“再见”则没问题,假设您从 b 数组中剥离了常量。

我假设字符串在 b 的情况下是可变的,因为它存储在用户定义的数组中。

在这种情况下,hello 和 goodbye 是否不同?鉴于此示例,出于某种原因,goodbye 不是字符串文字。另外,如果 goodbye 不是字符串文字,我可以假设它不保存在全局内存中,并且在编译时间后对它的唯一引用是留在用户数组单元格中的内容吗?

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