第1章是导言部分,内容相对简单,可以快速阅读一遍,并适当做一些练习,等学完后面章节再回头做剩余的练习。下面将简单记录几个重要的知识点:
1.1-1.3
(1)【P2】C语言程序都是由函数和变量组成的,函数中包含一些语句statement,用以执行一些操作;变量则是用于存储操作过程中需要使用的值;
(2)【P5】提到了程序的规范性写法,需要注意的是
①Tab对应的是四个空格(而不是我以为的三个);
②操作符两边加空格与操作数隔离开来(我一直不加空格);
(3)【P6】printf的格式化输出用法可详见P135,这里知道%6.1f是按照浮点数打印,至少6个字符宽,小数点后面有1位小数就可以;
1.4-1.5
(1)【P9】一般在程序内部中不直接使用300、20等数字,因为会导致阅读困难,另外一个阅读者可能并不理解数字的含义,可以通过#define宏定义来声明,这样也方便修改。注意宏定义时的变量需要大写,并且不带分号。
(2)【P9】这里了解一下文本模型:文本流是由多行字符构成的字符序列,而每行字符则由0个或多个字符组成,行末是一个换行符,标准库负责使每个输入/输出流都遵守这一模型。
字符在机器内部是以位模式存储的,一般用char类型,但是为了存放文件结束符EOF,一般将接受字符的变量声明为int类型。下面简单说明一下EOF:
EOF是end of file的缩写,表示"文字流"(stream)的结尾,它不是特殊字符,而是一个定义在头文件stdio.h的常量,#define EOF (-1),一般等于-1。以EOF作为文件结束标志的文件,必须是文本文件,由于数据在文本中都是以字符的ASCII代码值(范围是0~127)的形式存放,不可能出现-1,因此可以用EOF作为文件结束标志。
注意这里所说的"文字流",可以是文件(file),也可以是标准输入(stdin)。标准输入与文件不一样,无法事先知道输入的长度,必须手动输入一个字符,表示到达EOF。在windows系统中,按下Ctrl+Z和回车键来模拟EOF条件,UNIX和Linux用户应按Ctrl+D来模拟。
EOF虽然是文件结束符,但并不是在任何情况下输入Ctrl+Z都能够实现文件结束的功能,只有在下列的条件下,才作为文件结束符。
①遇到getcahr函数执行时,要输入第一个字符时就直接输入Ctrl+Z,就可以跳出getchar(),去执行程序的其他部分;
②在前面输入的字符为换行符时,接着输入Ctrl+Z;
③在前面有字符输入且不为换行符时,要连着输入两次Ctrl+Z,这时第二次输入的Ctrl+Z起到文件结束符的功能。
(3)【P12】若是int类型范围太小的话,可以使用long类型(最少是32位,由机器本身决定,有时会和int大小相同,若使用printf的话需要修改转换说明为%ld),也可以使用更大的double;
(4)【P13】注意字符常量(用单引号)与字符串常量(用双引号)的区别。字符常量的值等于该字符在机器字符集中对应的数值,在表达式中只是一个整型数(跟所选用的机器字符集有关,不要以为只有ASCII字符集);
(5)【P14】1.5.4节的例程感觉相当精彩,亮点是使用state来判断读出的字符是否在单词里面,开始初始化state为OUT,然后c=getchar()读入一个字符,不是空格/制表符/换行符之类字符的话就执行else if(state==OUT)将state设置为IN,一直到下一个空格/制表符/换行符(说明该单词结束)为止;
还要注意nl=nw=nc=0;赋值语句是从右到左执行的,而if(c==’ ’||c==’\n’||c==’\t’)是从左到右,只要有一个条件满足就不会执行后面的语句判断。