B.3.4 字符串常量
括在双引号内的0个或多个字符序列表示字符串常量。字符串内可以包含任何合法的字符,包括前面列出的任何转义字符。编译器将在字符串末尾自动插入一个空字符(‘\0’)。
通常,编译器会生成一个指向字符串中第一个字符的指针,且类型为“char指针”。然而,当字符串常量与sizeof运算符一起使用来初始化字符数组,或者与&运算符一起使用时,字符串常量的类型为“char数组”。
程序不能修改字符串常量。
1.字符串连接
预处理程序会自动将相邻的字符串常量连接到一起。字符串可通过0或多个空格字符来分隔。因此,下面3个字符串
“a”“character”
“string”
在连接后将等价于单个字符串
“a character string”
2.多字节字符
实现定义的字符序列可以在字符串内的不同状态之间进行转换,以便可以包含多字节字符。
3.宽字符串常量
扩展字符集中的字符串常量可使用格式L来表示。这种常量的类型是“wchar_t指针”,其中wchar_t定义在<stddef.h>中。
4.常量字符串对象
常量字符串对象可通过在常量字符串前面放置一个@字符来创建。这种对象的类型是NSConstantString。可以将相邻的字符串常量连接到一起,所以下面3个字符串
@“a”@“character”
@“string”
在连接后将等价于单个字符串
@“a character string”