====== 字符串常量(String constant) ====== 字符串常量由双引号(")包含的0个或多个字符构成。标准C允许使用前缀L来表示宽字符串常量。 字符串常量中可以使用反斜杆(\)实现转义。如果字符串常量中要包含双引号(")和反斜杆(\),则需要转义。 存储含有N个字符的字符串,所需的空间是N+1个字符,末尾用来存放null字符('\0')。所以,sizeof("abcdef")的结果为7,而不是6。 存储字符串常量的空间可能是只读的(read-only),不应该在程序中尝试修改字符串常量的内容。所以,有些函数如mktemp,不能传递给它一个字符串常量。 标准C允许实现给两个有相同内容的字符串常量分配同一个存储空间,所以不能假设所有的字符串常量都会有不同的地址。下面的程序用于检测实现是否共享相同内容的字符串常量: char *str1 = "abcd"; char *str2 = "abcd"; if (str1 == str2) printf("Strings are shared.\n"); 当字符串太长,无法写在同一行代码时,除了使用反斜杠(\)来续行外,标准C也支持将相邻的字符串常量合并为一个字符串常量的做法。如: char *str = "This long sring is permissible " "in Standard C."; C99支持普通字符串常量和宽字符串常量的连接,结果为宽字符串常量。C89则不支持这种做法。 {{tag>C语言}}