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”