为什么我们可以让char类型的指针指向const *

时间:2015-06-01 11:21:20

标签: c++ c constants

有一行代码如下:char* arr="Hello"。我听说字符串Hello位于某个地方,用于常量,例如const变量的值(是吗?)。我的困惑是,如果这个假设是正确的,为什么我们可以让char*类型的指针指向const的某个东西,让人们有机会改变const" Hello"串。我的意思是,对于像C这样有类型检查的语言来说,允许这种情况发生是不合理的呢?

1 个答案:

答案 0 :(得分:0)

请参阅"Hello"这里是字符串文字,但标准不是const

大多数编译器(包括gcc)将字符串文字放在只读内存中。标准仅强制要求不修改字符串文字。

引自C11标准,章节§6.4.5,字符串文字

  

如果程序试图修改这样的数组,则行为是   未定义。