有一行代码如下:char* arr="Hello"
。我听说字符串Hello
位于某个地方,用于常量,例如const变量的值(是吗?)。我的困惑是,如果这个假设是正确的,为什么我们可以让char*
类型的指针指向const
的某个东西,让人们有机会改变const" Hello"串。我的意思是,对于像C这样有类型检查的语言来说,允许这种情况发生是不合理的呢?
答案 0 :(得分:0)
请参阅"Hello"
这里是字符串文字,但标准不是const
。
大多数编译器(包括gcc
)将字符串文字放在只读内存中。标准仅强制要求不修改字符串文字。
引自C11
标准,章节§6.4.5,字符串文字
如果程序试图修改这样的数组,则行为是 未定义。