### C语言编程基础知识点详解
#### 一、C语言程序结构
C语言程序的基本结构包括三种:**顺序结构**、**循环结构**和**选择结构**。
1. **顺序结构**:按照代码书写的顺序执行。
2. **循环结构**:
- **for循环**:适合已知循环次数的情况。
- **while循环**:先判断条件再执行循环体,至少执行一次检查。
- **do-while循环**:先执行循环体至少一次,再判断条件。
3. **选择结构**:
- **if语句**:基本的选择结构,根据条件决定是否执行某个代码块。
- **switch语句**:基于多个条件进行选择,通常用于多分支选择。
#### 二、C语言基础知识
1. **程序入口**:所有C语言程序都从`main()`函数开始执行。
2. **数据存储**:计算机内部使用**二进制**形式存储数据,每一段数据都有其对应的内存地址。
3. **位与字节**:`bit`代表二进制位(0或1),`byte`代表字节,1字节等于8位。
4. **二进制转换**:熟悉二进制到十进制的转换方法。
5. **编译预处理**:不属于C语言的一部分,不参与运行时处理,主要用于预编译宏定义、头文件包含等。
6. **函数定义**:每个C语言程序只能有一个`main()`函数,并且函数内不能嵌套定义函数。
7. **算法特征**:必须有输出,但可以没有输入。
8. **循环控制语句**:`break`可用于退出循环结构或`switch`语句。
9. **运算符优先级**:逗号运算符的优先级最低。
#### 三、标识符与数据类型
1. **合法标识符**:由字母、数字、下划线组成,首位不能是数字,不能使用关键字(如`main`、`define`、`scanf`、`printf`等)。
2. **实型数据**:
- 合法形式如:`2.333e-1`。
- 规则:`e`前后必须有数字,`e`后的指数必须为整数。
3. **字符数据**:
- 单引号 `'1'` 表示字符,占用1字节。
- 双引号 `"1"` 表示字符串,至少占用2字节(包括空字符`\0`)。
4. **整型数据**:
- 一般占用2字节。
- 字符型数据占用1字节。
- 双精度浮点数一般占用4字节。
5. **转义字符**:如`'\n'`换行、`'\t'`制表符等。
6. **十六进制与八进制**:
- 十六进制表示方式:如`0x6d`。
- 八进制表示方式:如`06d`,注意八进制不能包含8或9这样的数字。
#### 四、运算符与表达式
1. **算术运算符优先级**:了解不同运算符的优先级及其结合性(左结合或右结合)。
2. **类型转换**:
- 强制类型转换语法:`(type) expression`。
- 注意括号的使用,例如`(int)(a+b)`与`(int)a+b`的区别。
3. **表达式**:
- 赋值表达式的结果是被赋值的变量值。
- 自增/自减表达式:`++a`先加后用,`a++`先用后加。
- 逗号表达式的值是最后一个表达式的值。
4. **位运算**:
- 位运算符包括`&`(按位与)、`|`(按位或)、`^`(按位异或)、`<<`(左移)、`>>`(右移)等。
- 计算过程:将十进制转换为二进制,执行位运算后再转换回十进制。
- 特殊规则:`<<`左移一位相当于乘以2,`>>`右移一位相当于除以2。
#### 五、输入输出
1. **printf函数**:
- 格式化输出,常用格式符如`%d`、`%c`、`%f`等。
- 注意宽度和对齐方式等修饰符。
2. **scanf函数**:
- 用于格式化输入,参数为格式字符串和变量地址。
- 示例:`scanf("%d %d", &a, &b);`。
- 使用`%*d`可以跳过输入的某些部分。
通过以上知识点的学习,初学者可以建立起C语言的基础知识体系,为进一步深入学习打下坚实的基础。