无法修改C字符串
考虑下面的代码。
int main(void) {
char * test = "abcdefghijklmnopqrstuvwxyz";
test[5] = 'x';
printf("%sn", test);
return EXIT_SUCCESS;
}
在我看来,这应该打印abcdexghij。 然而,它只是终止而不打印任何东西。
int main(void) {
char * test = "abcdefghijklmnopqrstuvwxyz";
printf("%sn", test);
return EXIT_SUCCESS;
}
然而,这工作得很好,所以我误解了操纵C字符串或什么的概念? 万一它很重要,我运行的是Mac OS X 10.6,它是我正在编译的32位二进制文件。
被接受的答案很好,但不完整。
char * test = "abcdefghijklmnopqrstuvwxyz";
字符串文字是指一个类型为char[N]的静态存储持续时间(意味着它存在于程序的整个执行过程中)的匿名数组对象,其中N是字符串的长度加上终止'
