Page 3
前言
最近看了《C Prime Plus》第六版。感觉这本是写真的不错,说起来我一个计算机的学生现在才开始这本书实在是有点慢了,虽然学校在大一上的时候教过这门课,但是和这本书的内容相比简直就是弱爆了。在看这本书的时候,我会把一些比较容易忘记的知识点记下来,但是想想可能也有很多的小白和我有一样的问题,所以干脆就写这一系列的博客,一方面方便我回顾,另一方面可以帮助有同样问题的小白。
我把书中的代码和课后习题放在了自己的github里面了,地址是
https://github.com/alon-han/CPrimePlus-code
欢迎大家点个star给我
提示:知识点的形式比较零散,如果想看比较连贯的知识点还是需要去书的。
内容
1、使用字符串初始化数组和指针
- 初始化数组:把静态存储区的字符串拷贝到数组中
- 初始化指针:只把字符串地址拷贝给指针
2、字符串、字符数组、字符串数组
- 字符串:使用双引号括起来的一个值
- 字符数组: char类型的数组
- 字符串数组:存在两种实现方式
-
- 指向字符串的指针数组
-
- char类型二维数组
2中方式各有优缺点,取舍使用
- char类型二维数组
3、fgets/fputs && gets/puts
gets()丢弃输入中的换行符 puts()在输出中添加换行符
fgets() 保留输入中的换行符fputs()不在输出中添加换行符
4、NULL 和 ‘\0’
相同之处:都可以别结束为数值0
不同之处:’\0’是字符串结束字符;NULL是一个指向无效地址的指针
5、翻译单元
C预处理器实际上使用.h文件内容替换include的位置,编译器把这个.c文件和其include的.h文件一起看做一个文件,成为翻译单元。一个文件作用域变量的实际作用范围是一个翻译单元。
6、三种连接形式和文件作用域
- 外部链接:在任何函数外部直接声明
- 内部链接:加上static关键字在任何函数外部声明
- 无连接:在函数内部声明static变量(在该翻译单元中,只有该函数看得见这个变量)
外部链接的文件作用域:所有翻译单元都可以使用
内部链接的文件作用域:一个翻译单元私有