《C 语言核心技术》p46 笔记

C语言没有严格地禁止修改字符串字面值,但不应该这么做:

char *p = “house”;   // 初始化一个字符指针

char *p = ‘m’;        

上面的语句具有不可移植性,原因之一是,编译器将字符串字面值视为常量,可能会将字符串存储在只读存储器,所以试图对此字符串执行写入操作将会产生错误。另一个原因是,如果程序中有两个或更多个完全相同的字符串字面值,编译器可能会将它们存储在相同的位置,因此修改一个字符串会影响到其他字符串。

上面的问题的一个解决策略是:

char s[] = “house”;   // 初始化为一个字符串数组

s[0] = ‘m’;              // 修改数组内容,现在数组内容是 ”mouse”

posted @ 2011-02-24 22:27  jeff_nie  阅读(200)  评论(0编辑  收藏  举报