字符串文字是否恒定?

时间:2012-02-04 02:37:40

标签: c c-strings arrays

  

可能重复:
  Is it possible to modify a string of char in C?

char *s = "anusha";

这就像一个常量指针吗?当我试图通过写s[3]='k'来改变位置3中的角色时,它给了我一个分段错误。所以我假设它就像指向一个常量数组或s是一个常量指针?哪两个?请澄清。

2 个答案:

答案 0 :(得分:4)

这是正确的,不允许修改字符串文字。

然而,这样做是合法的:

char s[] = "anusha";
s[3] = 'k'

这里的不同之处在于它存储为可以修改的本地数组。

答案 1 :(得分:0)

看起来您的编译器将"anusha"视为指向char的指针,但将字符串本身置于写保护的内存中。我记得读到这是一个方便的政策,以符合现有的代码。

正如Joe指出的那样,这在Is it possible to modify a string of char in C?中有详细说明。