char *s = "anusha";
这就像一个常量指针吗?当我试图通过写s[3]='k'
来改变位置3中的角色时,它给了我一个分段错误。所以我假设它就像指向一个常量数组或s是一个常量指针?哪两个?请澄清。
答案 0 :(得分:4)
这是正确的,不允许修改字符串文字。
然而,这样做是合法的:
char s[] = "anusha";
s[3] = 'k'
这里的不同之处在于它存储为可以修改的本地数组。
答案 1 :(得分:0)
看起来您的编译器将"anusha"
视为指向char
的指针,但将字符串本身置于写保护的内存中。我记得读到这是一个方便的政策,以符合现有的代码。
正如Joe指出的那样,这在Is it possible to modify a string of char in C?中有详细说明。