第一章    程序与程序设计
1.  程序是对解决某个问题的方法步骤的描述。
2.  从计算机角度来说,程序是用某种能理解并执行的计算机语言描述解决问题的方法步骤。
3.  二进制语言 > 汇编语言 : 面向机器的语言(只能在同种类型的机器上运行)。
4.  高级语言 :面向问题的语言。
5.  源程序 ――――――――解释执行―――――――――― > 二进制(解释程序)
|_________________ 编译程序 ________________________> 二进制 (目标程序) <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

6.  早期的高级语言: ALGOL( 算法语言 ) FORTRAN( 公式语言 ) BASIC, COBOL, FOXBASE,PASCAL C 语言。

7.  ALGOL-(1960 ALGOL60)- à CPL (复合程序设计语言) - à BCPL(1967 基本复合程序设计语言,“ B ”语言编写了 UNIX 操作系统 )- à C 语言( 1972 重写了 UNIX
8.  C 语言的字符集:
(1)       大小写英文字母( 52 个)

(2)       数字( 10 个)
(3)       键盘符号( 33 个)
(4)       转义字符( 12 个)
9.  标识符是由字母或下划线开头的字母,数字,下划线组成的一串符号。标识符不能是保留字。

10.              C 语言中的程序中有特殊含义的英文单词称为“保留字”,主要用于构成语句,进行存储和数据类型定义。
11.              C 程序的执行是从主函数开始,并在主函数中结束。
第二章    基本数据类型和运算
1.  数据类型是指数据的内在表现形式。
2.  数据在加工计算中的特征就是数据的类型。
3.  共用型―――如果若干个数据不同时使用,我们就可以让他们占用相同的内存区域,以便节省内存,这些数据组合在一起就是“共用型”。
4.  枚举型―――如果某数据在程序运行中,只取固定的几个值,我们就可一把几个值列出来,以后这个数据只能取这几个值之中的某一个。这种数据在 C 语言中就叫做枚举型。
5.  数据所占用的内存字节数该数据的“数据长度”。
6.  C 语言所规定的常量类型有四种:整型常量,实型常量,字符常量,字符串常量。常量是事先不需要定义的,只要在程序中需要的地方直接写出该常量即可。常量的类型也不需要事先说明,他们的类型是书写方法自动默认的。
7.  整型常量的书写形式有 3 种:十进制,八进制,十六进制。
8.  Window2000 VC6 sizeof int )= 4 sizeof long )= 4 sizeof short )= 2
9.  实型常量只有十进制,也成为“浮点数”,也就是带小数点的实数。书写方式有:
(1)       一般形式的实数:它由整数,小数点,小数组成。其中整数部分或小数部分可以省略,数有“+”,“-”。
(2)       指数形式的实数:它由尾数,( e E ),指数 三部分组成。有“+”,“—”;
12 2345e 2 sizeof float )= 4 ;有效数字实 7 位(在 Windows2000 VC6 中不是, 7 位后仍然有效)。

10.              一个字符常量占用一个字节,一个字符常量也可以看成是“整型常量”,其值就是 ASCII 代码值。因此可以把字符常量作为整型常量来使用,如‘ A ’= 65

11.              如果值在 0 128 之间, C 语言规定也可以将其看成一个字符常量。如 111 o ’, 70 =‘ F ’, 40 ‘(’;
12.              当程序运行时,每个变量都要占用连续的若干个字节,所占用的字节数量有变量的数据类型确定。其中第一个字节的地址称为变量的地址。
13.              C 语言中字符串只能时常量,没有字符串变量。
14.              在计算机的寄存器和内存中都可以存放数据,而内存中又可以分为一般数据区和堆栈区。变量的存放处称为变量的存储类型:( 自动型) auto( 内存堆栈区 ), (寄存器型) register CPU 的通用寄存器) , (静态型) static (内存数据区) , (外部参照型) extern

15.              C 语言允许将一个源程序清单分放在若干个程序文件中,采用分块编译方法编译成一个目标程序。其中的每一个程序文件称为一个“编译单位”。
16.              变量的初始化是给变量赋值的一种方式。外部参照型( extern )变量不允许初始化。静态型( static )变量如果进行初始化,只有第一次执行定义语句时内存赋予初始值,当退出所定义的函数或复合语句时,将保留其值,当再次进入函数或复合语句时将不再重新定义,也不进行初始化。此时,改变量的值是上次离开的值。若不初始化则 C 语言编译系统将自动为其赋予“零值”:对数值型变量赋 0 ,对字符型变量赋空字符(空字符的 ASCII 代码值为 0 )。
3 顺序结构,选择结构和循环结构的程序设计
1.  If (表达式)语句 ; 表达式的值是“真”(“真”是“非零”)。
2.  Switch (表达式)表达式是“字符型”或“整型表达式”。
3.  Break 只能用在三条循环语句的循环体中或 switch 语句中。 Continue 只能用在三条循环语句的循环体中。
4 数组
1.  数组长度至少比字符串中有效字符数多 1 ,以便存放字符串结束标记。 C 语言规定:使用“% s ”格式,从键盘上向字符数组中输入字符串时,回车换行符或空格符均作为字符串的结束标记,输出字符数组中的字符串时,只输出到字符串结束标记。
2. 字符串的长度是指字符串中有效字符的个数,而有效字符不含字符串结束标记号。如“ ABC ”的长度为 3 ,“ 1 2 3AB ”的长度为 7 ,其中空格符也是有效字符。 空字符是不是空格符呢?不是! ’\o’ 不是空格符。

5 指针
1.  访问一个变量可以用指针,但事先需要将指针变量“指向”变量或数组,所谓“指向”就是将变量或数组的地址存放到指针变量中
2. 变量的地址只能通过运算符通过运算来获得。这个运算符是“ & , 称为“取地址运算符”,运算对象是变量或数组名,数组的首地址 就是数组名,不必利用取地址运算符通过运算来获得。即 a &a[0] 的作是相同的。

3. 取地址运算符的运算对象必须是已定义的变量或数组元素,但不可以是数组名。运算结果是运算对象的地址。

4.  虽然从书写格式上看指向数组首地址的指针变量和数组名可以互换,但他们是完全不同的概念。指针变量是存放“地址”这种数据类型的变量。可以按照变量的处理方式对其进行运算;而数组名仅仅是一个地址常量,只能按常量的方式进行处理。

5.  当指针变量已指向数组后,对指针变量可以进行算术和关系运算。指针变量+整数,――指针变量,指针变量++。

6.  当指针变量已指向数组后,对指针变量可以进行增 1 1 的算术运算,也可以对其进行加减整数的算术运算并可以存回指针变量,但对代表地址常量的数组名不能进行增 1 1 的算术运算,虽然可以对其进行加减整数的运算,但是不能存回数组名。

7.  当指针变量的值(地址值)满足关系运算符时,结果为 1 (真),否则结果为 0 (假)。

8.  可以用复制方式使指针变量指向字符串常量,但是不允许将字符串常量赋值给字符型数组。

6 函数

1.  函数的存储类型说明符: extern static 。选取 Extern ,则定义的函数叫做外部函数,他可以被其他编译单位中的函数调用 ; 选取 static 的函数叫做内部函数,只能被本编译单位的函数调用。存储类型说明符默认为 extern

2.  当形式参数是数组时,只需要写出数组名,数组长度可以不给。

3.  “值传递”方式的特点时“参数值的单向传递”。“地址传递”是“参数值的双向传递”。

4.  采用 地址传递方 式的“ 实际参数” 只能是 变量的地址,数组名(数组首地址)或指针等 ,而接受地址值的“形式参数”也只能是 指针变量或数组名。

5.  指针型函数的调用和一般函数的调用方法完全相同,唯一需要注意的是只能用指针变量指针型数组元素来接受指针型函数的返回值,不能用数组名来接受指针型函数的返回值,因为数组名是地址常量,不是地址变量,不能接受地址型数据。

7 结构型,共用型和枚举型
1.  结构型是一种数据类型,其中的成员不是变量,系统不会给成员分配内存。已经定义的某种结构型可以作为一种数据类型,用来定义变量,数组,指针。这时才会给定义的变量,数组,指针分配内存。
2.  对结构型变量只能使用其中的成员,一般不能直接使用结构型变量。

3.  结构性变量成员的地址也可以使用。如将结构型成员变量地址存放到某个指针变量中,需要注意指针变量的数据类型必须和这个成员的数据类型相同。

4.  C 语言规定,定义某个结构型时,其成员可以是该结构型,但是这个成员只能是 指针变量或指针数组 ,不能是普通变量或数组。

5.  使用返回值方式传递结构型数据,函数的返回值必须是某种已定义的结构型指针,利用“ return (表达式)”,语句返回的表达式的值必须是同种结构型的指针,该指针的指向的数据则是同一种结构型的数据,而接受返回值变量也必须是这种结构型指针变量。

6.  由于共用型数据的成员不能同时起作用,因此,对共用型变量,数组的定义不能赋初值,只能在程序中对其成员赋值。
7.  C 语言规定,共用型数据不能作为函数的参数在函数间传递,也不可以某函数返回共用型数据值。但是,允许使用指向共用型数据的指针变量在函数间传递共用型数据。
8 文件
1.  C 语言规定文件是一种特殊的“结构型”,该结构型中的成员记录了处理文件时所需的信息。
2.  FILE ,fopen(),fclose(),fputc(),fgetc(),fputs().fgets(),fwrite(),fread(),
9 编译预处理与带参数的主函数
1.  以“#”开头的命令,是在源程序正式编译前进行处理的,称为“编译预处理”命令。编译预处理主要包括:宏的处理,包含文件的处理,条件编译的处理等。
2.  宏的作用域是从定义处(“# define ”)到文件尾或命令“# undef ”出现处。如果宏名出现在字符串常量中,将不作为宏名处理,不对其进行宏替换。宏定义可以嵌套。
3.  if (表达式)
else
endif                         // 其中表达式值为非 0 ,则条件成立,否则,条件不成立。
4 .# ifdef ( 宏名 )
else
endif         // 其中宏名可以是前面已定义过的宏名,也可以是前面没有定义过的宏名,若“已定义过”则条件成立。
5 .# ifndef  ( 宏名 )
       else
       endif                        // 与上个命令相反,其中宏名可以是前面已定义过的宏名,也可以是前面没有定义过的宏名,若“有定义过”条件成立。