
第8章宏、结构体与位运算 主讲教师:陈勇 联系电话:13891934678 E-Mail:cy@nwsuaf.edu.cn 计算机应用教研室
计算机应用教研室 第8章 宏、结构体与位运算 主讲教师:陈 勇 联系电话:13891934678 E-Mail:cy@nwsuaf.edu.cn

本章内容 第8章宏、结构体与位运算 8.1宏替换 8.2结构体基本概念 8.3结构体类型变量 8.4结构体类型应用举例 8.5类型定义typedef 8.6位运算及应用
第8章宏、结构体与位运算 本章内容 8.1 宏替换 8.2 结构体基本概念 8.3 结构体类型变量 8.4 结构体类型应用举例 8.5 类型定义typedef 8.6 位运算及应用

8.1宏替换 第8章宏、结构体与位运算 1.宏替换:就是在C语言源代码被编译成目标程 序前,将源代码中的一个字符串用另一个字符 串代替的过程。例如: 2.宏替换注意事项P289 3.带 #define P printf #define pause getch() main( P("i love this game!"); pause;
第 8 章 宏 、 结 构 体 与 位 运 算 8.1 宏替换 1. 宏替换:就是在C语言源代码被编译成目标程 序前,将源代码中的一个字符串用另一个字符 串代替的过程。例如: 2. 宏替换注意事项P289 3. 带参数的宏换 #define P printf P292 #define pause getch() main(){ P("i love this game!"); pause; }

8.1宏替换 第8章宏、结构体与位运算 4.宏与函数的比较 (1)宏不管包含几个语句,必须在一行内写 完,函数可以包含多行语句; (2)宏替换在编译前完成,而函数调用在程 序运行过程中完成; (3)宏替换时对参数不作类型检测,而函数 需要作类型检测
第 8 章 宏 、 结 构 体 与 位 运 算 8.1 宏替换 4. 宏与函数的比较 (1)宏不管包含几个语句,必须在一行内写 完,函数可以包含多行语句; (2)宏替换在编译前完成,而函数调用在程 序运行过程中完成; (3)宏替换时对参数不作类型检测,而函数 需要作类型检测;

8.2结构体基本概念 第8章宏、结构体与位运算 1.概念回顾 ()基本数据类型: 整型,实型, 字符型 每个变量要一一定义,各个变量之间彼此独立, 没有内在固定的联系: (2)数组:整型, 实型,字符型数组,将 多个同类型的数据组合到一起,构成彼此之间 有联系的一组数,方便了数据的处理(循环) (3)指针:存储内存地址, 达到间接处理 数据的目的,方便了函数之间的数据传递
第 8 章 宏 、 结 构 体 与 位 运 算 8.2 结构体基本概念 1. 概念回顾 (1)基本数据类型:整型,实型,字符型, 每个变量要一一定义,各个变量之间彼此独立, 没有内在固定的联系; (2)数组:整型,实型,字符型数组,将 多个同类型的数据组合到一起,构成彼此之间 有联系的一组数,方便了数据的处理(循环); (3)指针:存储内存地址,达到间接处理 数据的目的,方便了函数之间的数据传递

8.2结构体基本概念 第8章宏、结构体与位运算 2. 问题的提出 对于一组类型相同,彼此之间有联系的数据 我们可以使用数组,再利用循环解决,但如果 组数彼此有联系而类型又不同,我们怎么处 理呢? 例如:有10个学生信息, 包括学号、姓名、 性别、年龄、通讯地址、成绩,若要按成绩排 序,用以前的知识怎么解决呢?
第 8 章 宏 、 结 构 体 与 位 运 算 2. 问题的提出 对于一组类型相同,彼此之间有联系的数据 我们可以使用数组,再利用循环解决,但如果 一组数彼此有联系而类型又不同,我们怎么处 理呢? 例如:有10个学生信息,包括学号、姓名、 性别、年龄、通讯地址、成绩,若要按成绩排 序,用以前的知识怎么解决呢? 8.2 结构体基本概念

8.2结构体基本概念 第8章宏、结构体与位运算 问题的提出 例如:有10个学生信息,包括学号、姓名、性别、 年龄、通讯地址、成绩,若要按成绩排序,用以前的知 识怎么解决呢?思路如下: ()分别定义数组存放不同类型的每一列数据,如 学号、性名、性别、通讯地址,定义为字符型数组;年 龄为整型、成绩为单精度; (2)排序时存在数据交换,交换时必须分别交换以 上数组各元素的值,处理就非常麻烦; (3)对于一行数据,如果能将不同类型数据捆绑在 一起,作为一个数据,那交换就非常方便了。 (4)结构体就可以解决这个问题
第 8 章 宏 、 结 构 体 与 位 运 算 2. 问题的提出 例如:有10个学生信息,包括学号、姓名、性别、 年龄、通讯地址、成绩,若要按成绩排序,用以前的知 识怎么解决呢?思路如下: (1)分别定义数组存放不同类型的每一列数据,如 学号、性名、性别、通讯地址,定义为字符型数组;年 龄为整型、成绩为单精度; (2)排序时存在数据交换,交换时必须分别交换以 上数组各元素的值,处理就非常麻烦; (3)对于一行数据,如果能将不同类型数据捆绑在 一起,作为一个数据,那交换就非常方便了。 (4)结构体就可以解决这个问题。 8.2 结构体基本概念

8.2结构体基本概念 第8章宏、结构体与位运算 3 与结构体有关的基本概念 (1)结构体(structure):指若干不同类 型(相同也可以) 的数据项组合而成的数据结 构,也称为自定义数据类型。用它可以描述表 格中一行数据; (2)记录(record):指表格中的一行数据; (3)数据项:组成结构体的每一个数据成 员,也称域、字段,实际上就是表格中的列。 实际上可以认为结构体就是用来处理表格 的一种结构!
第 8 章 宏 、 结 构 体 与 位 运 算 3. 与结构体有关的基本概念 (1)结构体(structure):指若干不同类 型(相同也可以)的数据项组合而成的数据结 构,也称为自定义数据类型。用它可以描述表 格中一行数据; (2)记录(record):指表格中的一行数据; (3)数据项:组成结构体的每一个数据成 员,也称域、字段,实际上就是表格中的列。 实际上可以认为结构体就是用来处理表格 的一种结构! 8.2 结构体基本概念

8.2结构体基本概念 第8章宏、结构体与位运算 4. 结构体的定义 struct :结构体名 类型名1 第1成员名; 类型名2 第2成员名; 类型名N 第N成员名;
第 8 章 宏 、 结 构 体 与 位 运 算 4. 结构体的定义 struct 结构体名 { 类型名1 第1成员名; 类型名2 第2成员名; …… 类型名N 第N成员名; }; 8.2 结构体基本概念

8.3结构体类型变量 第8章宏、结构体与位运算 1.结构体类型变量的定义 定义结构体仅仅是定义了一种类型,使得在后续程序 中可以使用象整型、实型一样的一种数据类型,真正应用 还得通过变量或数组来使用。定义结构体类型变量有三种 方法(P302) 2 结构体类型变量的成员的引用 引用是通过“.”运算符实现的。如同数组元素是通过 “[]”一样(P304) 3. 结构体类型变量的初始化(P304) 与数组初始化类似,只是因为结构体中可以包含各种 类型,所以比数组更灵活
第 8 章 宏 、 结 构 体 与 位 运 算 8.3 结构体类型变量 1.结构体类型变量的定义 定义结构体仅仅是定义了一种类型,使得在后续程序 中可以使用象整型、实型一样的一种数据类型,真正应用 还得通过变量或数组来使用。定义结构体类型变量有三种 方法(P302)。 2. 结构体类型变量的成员的引用 引用是通过“.”运算符实现的。如同数组元素是通过 “[ ]”一样(P304)。 3. 结构体类型变量的初始化(P304) 与数组初始化类似,只是因为结构体中可以包含各种 类型,所以比数组更灵活