有一行代码是这样的: char* arr="Hello"
。我听说字符串 Hello
位于某个地方,用于存放常量内容,例如 const 变量的值(是吗?)。我的困惑是,如果这个假设成立,为什么我们可以让 char*
类型的指针指向 const
,让人们有机会更改 const "Hello"字符串。我的意思是,对于像 C 这样具有类型检查的语言允许这种情况发生,这不是不合理吗?
最佳答案
看,这里的“Hello”
是一个字符串文字,但按照标准它不是const
。
大多数编译器(包括 gcc
)将字符串文字放入只读内存中。标准仅要求不要修改字符串文字。
引用 C11
标准,第 §6.4.5 章,字符串文字
If the program attempts to modify such an array, the behavior is undefined.
关于c++ - 为什么我们可以让 char 类型的指针指向 const*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30572201/