C Primer Plus (第11章) 笔记

字符串和字符串函数

笔记

<1 如果字符串字面量之间没有间隔,或者用空白字符分隔,C会将其视为串联起来的字符串字面量。

<2 用标准的数组初始化模式给字符串初始化时,末尾一定要加上‘\0’,不然就不是一个字符串,而是一个字符数组。

❤️ 让编译器计算数组的大小只能用在初始化时。

<4

const char ar1[] = "Something is pointing at me.";
[注]:ar1是代表数组的首地址, 是常量。不能更改ar1,如果改变了ar1,则意味着改变了数组的存储位置(即地址)。可以进行类似ar1 + 1这样的操作,标识数组的下一个元素,但是不允许进行++ar1这样的操作。(递增运算符只能用于变量名前)
const char *pt1 = "Something is pointing at me.";
[注]:指针形式可以使用递增运算符。因为指针形式是把数据(字符串,数字…)的地址存储在指针变量中。开始时指针指向该字符串的首字符,但由于它是变量,故可以使用递增运算符。
[总结]:总的来说,初始化数组把静态存储区的字符串拷贝到数组中,而初始化指针只把字符串的地址拷贝给指针。

<5 建议在把指针初始化为字符串字面量时使用const限定符(这样减少出错的概率)

<6 不建议使用gets(),它不安全。

<7 puts()函数会在待输出字符串末尾添加一个换行符,而fputs()不会这样做。

<8 空字符和空指针

空字符:’\0’ 是用于标记C字符串末尾的字符,其对应字符编码是0。
空指针:NULL 该值不会与任何数据的有效地址对应。函数用它返回一个有效地址表示某些特殊情况发生,例如遇到文件结尾或未能按预期执行。
【注】: 空字符是整数类型,空指针是指针类型。(容易混淆是因为两者都可以用数值0来表示)

<9 C编译器允许main()没有参数或者有两个参数(一些实现允许main()有更多的参数,属于对标准的扩展)。

你可能感兴趣的:(C)