无法修改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
是字符串的长度加上终止'