响水凹

欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki

用户工具

站点工具


computer:c:tips:string_constant

字符串常量(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则不支持这种做法。

computer/c/tips/string_constant.txt · 最后更改: 2014/11/01 02:02 由 127.0.0.1