【C-Primer-Plus读书笔记】第11章:字符串和字符串函数
表示字符串和字符串I/O
在程序中定义字符串
字符串字面量(字符串常量)
- 用双引号括起来的内容称为字符串字面量,也叫作字符串常量。双引号中的字符和编译器自动加入末尾的
\0
字符,都作为字符串存储在内存中。 - 从ANSI C标准起,如果字符串字面量之间没有间隔,或者用空白字符分割,C会将其视为串联起来的字符串字面量。
- 字符串常量属于静态存储类别,这说明如果在函数中使用字符串常量,该字符串只会被存储一次,在整个程序的生命周期内存在,即使函数被调用多次。用双引号括起来的内容被视为指向该字符串存储位置的指针。这类似于把数组名作为指向数组位置的指针。
- 用双引号括起来的内容称为字符串字面量,也叫作字符串常量。双引号中的字符和编译器自动加入末尾的
字符串数组和初始化
定义字符串数组时,必须让编译器知道需要多少空间:- 一种方法是用足够空间的数组存储字符串。在指定数组大小时,要确保数组元素个数至少比字符串长度多1(为了容纳空字符)。所有未被使用的元素都被自动初始化为0(这里的0指的是char形式的空字符,不是数字字符0)。
- 另一种方法就是让编译器确定数组大小,即前面讲过的省略数组初始化声明中的大小,编译器会自动计算数组大小。让编译器计算数组的大小只能用在初始化数组时。如果创建一个稍后再填充的数组,就必须在声明时指定大小。
- 同数组,字符串的声明可以使用数组表示法和指针表示法。