摘要:
C语言没有严格地禁止修改字符串字面值,但不应该这么做:char *p = “house”; // 初始化一个字符指针char *p = ‘m’; 上面的语句具有不可移植性,原因之一是,编译器将字符串字面值视为常量,可能会将字符串存储在只读存储器,所以试图对此字符串执行写入操作将会产生错误。另一个原因是,如果程序中有两个或更多个完全相同的字符串字面值,编译器可能会将它们存储在相同的位置,因此修改一个字符串会影响到其他字符串。上面的问题的一个解决策略是:char s[] = “house”; // 初始化为一个字符串数组s[0] = ‘m’; // 修改数组内容,现在数组内容是 ”mouse” 阅读全文