C语言程序设计-结构体与共用体ppt课件

上传人:29 文档编号:240774091 上传时间:2024-05-07 格式:PPT 页数:71 大小:824.06KB
返回 下载 相关 举报
C语言程序设计-结构体与共用体ppt课件_第1页
第1页 / 共71页
C语言程序设计-结构体与共用体ppt课件_第2页
第2页 / 共71页
C语言程序设计-结构体与共用体ppt课件_第3页
第3页 / 共71页
点击查看更多>>
资源描述
“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。第第第第1212章章章章 结构体与共用体结构体与共用体结构体与共用体结构体与共用体程序设计语言程序设计语言程序设计语言程序设计语言第第12章章 结结构体与共用体程序构体与共用体程序设计语设计语言言C1“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。本章主要内容本章主要内容 结构体数据类型,共用体数据类型、枚举数据类型、定结构体数据类型,共用体数据类型、枚举数据类型、定义数据类型的别名义数据类型的别名 结构体变量、结构体数组、结构体指针的定义和初始化结构体变量、结构体数组、结构体指针的定义和初始化 结构体成员的引用、成员选择运算符、指向运算符结构体成员的引用、成员选择运算符、指向运算符 向函数传递结构体变量、结构体数组、结构体指针向函数传递结构体变量、结构体数组、结构体指针 动态数据结构、动态链表动态数据结构、动态链表2本章主要内容本章主要内容 结结构体数据构体数据类类型,共用体数据型,共用体数据类类型、枚型、枚举举数据数据类类型型“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。C C C C数数数数据据据据类类类类型型型型指针类型指针类型指针类型指针类型空类型空类型空类型空类型voidvoid定义类型定义类型定义类型定义类型typedeftypedef构造类型构造类型构造类型构造类型枚举类型枚举类型枚举类型枚举类型enumenum数组数组数组数组结构体结构体结构体结构体structstruct共用体共用体共用体共用体unionunion基本类型基本类型基本类型基本类型字符类型字符类型字符类型字符类型charchar实型实型实型实型单精度型单精度型单精度型单精度型floatfloat双精度型双精度型双精度型双精度型doubledouble整整整整 型型型型短整型短整型短整型短整型shortshort长整型长整型长整型长整型longlong整型整型整型整型intint只能定义单一的只能定义单一的只能定义单一的只能定义单一的数据类型,反映数据类型,反映数据类型,反映数据类型,反映事物单一属性事物单一属性事物单一属性事物单一属性如定义学生成绩:如定义学生成绩:如定义学生成绩:如定义学生成绩:float score;float score;能定义复杂的数能定义复杂的数能定义复杂的数能定义复杂的数据类型,反映事据类型,反映事据类型,反映事据类型,反映事物多个属性物多个属性物多个属性物多个属性存放相同数据类型的一存放相同数据类型的一存放相同数据类型的一存放相同数据类型的一组数据,如:组数据,如:组数据,如:组数据,如:float score30;float score30;float score30;float score30;12.1 从基本数据类型到抽象数据类型从基本数据类型到抽象数据类型3C指指针类针类型空型空类类型型void定定义类义类型型typedef构造构造类类型枚型枚举类举类“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。412.1从基本数据类型到抽象数据类型从基本数据类型到抽象数据类型 用户自己构造数据类型用户自己构造数据类型用户自己构造数据类型用户自己构造数据类型复合数据类型复合数据类型复合数据类型复合数据类型由基本数据类型迭代派生而来,表示复杂的数据对象由基本数据类型迭代派生而来,表示复杂的数据对象由基本数据类型迭代派生而来,表示复杂的数据对象由基本数据类型迭代派生而来,表示复杂的数据对象 典型的代表就是典型的代表就是典型的代表就是典型的代表就是“结构体结构体结构体结构体”抽象数据类型(抽象数据类型(抽象数据类型(抽象数据类型(Abstract Data TypeAbstract Data Type,ADTADT)在复合数据类型基础上增加了对数据的操作在复合数据类型基础上增加了对数据的操作在复合数据类型基础上增加了对数据的操作在复合数据类型基础上增加了对数据的操作 抽象数据类型进而进化为抽象数据类型进而进化为抽象数据类型进而进化为抽象数据类型进而进化为“类类类类(Class)”(Class)”这是一个跨时代的进步这是一个跨时代的进步这是一个跨时代的进步这是一个跨时代的进步ClassClass是是是是Object-OrientedObject-Oriented的一个重要概念的一个重要概念的一个重要概念的一个重要概念4412.1从基本数据从基本数据类类型到抽象数据型到抽象数据类类型用型用户户自己构造数据自己构造数据类类型型“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.1 12.2.1 问题的提出问题的提出12.2.2 12.2.2 结构体类型(结构体模板)定义结构体类型(结构体模板)定义12.2.3 12.2.3 结构体变量的定义结构体变量的定义12.2.4 12.2.4 结构体变量的初始化结构体变量的初始化12.2.5 12.2.5 结构体变量的引用结构体变量的引用12.2.6 12.2.6 结构体数组结构体数组12.2.7 12.2.7 结构体指针结构体指针12.2.8 12.2.8 结构体作为函数参数结构体作为函数参数12.2 结构体结构体512.2.1 问题问题的提出的提出12.2 结结构体构体5“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.1 问题的提出问题的提出一个学生的信息有一个学生的信息有学号、姓名、性别、年龄、成绩学号、姓名、性别、年龄、成绩等等一本图书的信息有一本图书的信息有分类编号、书名、作者、出版社、分类编号、书名、作者、出版社、出版日期、价格、库存量出版日期、价格、库存量等等如何如何描述和管理描述和管理这些这些类型不同类型不同类型不同类型不同的的相关相关相关相关数据?(数据?(使用二使用二维数组行吗维数组行吗)问题:问题:612.2.1 问题问题的提出一个学生的信息有学号、姓名、性的提出一个学生的信息有学号、姓名、性别别、年、年“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.1 问题的提出问题的提出解决方案:解决方案:1)1)1)1)独立的变量表示:独立的变量表示:独立的变量表示:独立的变量表示:数据项之间无关联数据项之间无关联数据项之间无关联数据项之间无关联数据覆盖数据覆盖数据覆盖数据覆盖712.2.1 问题问题的提出解决方案:的提出解决方案:1)独立的独立的变变量表示:量表示:数据数据“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.1 问题的提出问题的提出2)2)使用一维数组使用一维数组张三张三李四李四王五王五赵六赵六麻七麻七FMFMF100110021003100410051921182019agenosexname分配内存不集中,寻址效率不高分配内存不集中,寻址效率不高;对数组赋初值时,易发生错位对数组赋初值时,易发生错位 ;结构显得零散,不易管理;结构显得零散,不易管理;90879687.576score812.2.1 问题问题的提出的提出2)使用一使用一维维数数组张组张三李四王五三李四王五赵赵六麻七六麻七“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.1 问题的提出问题的提出解决方案:解决方案:C C 语言引入了称为结构体的数据存储方式语言引入了称为结构体的数据存储方式“结构体结构体”是一种构造数据类型,它是由若干数据项是一种构造数据类型,它是由若干数据项组合而成的复杂数据对象,这些数据项称为组合而成的复杂数据对象,这些数据项称为结构体的结构体的成员成员。把把关系紧密关系紧密且且逻辑相关逻辑相关的多种不同类型的变量,的多种不同类型的变量,组织到统一的名字之下组织到统一的名字之下,占用占用相邻相邻的一段内存单元的一段内存单元结构体变量表示:结构体变量表示:结构体变量表示:结构体变量表示:把把把把不同类型不同类型不同类型不同类型的数据组合成一个整体的数据组合成一个整体的数据组合成一个整体的数据组合成一个整体数据项为一个整体数据项为一个整体数据项为一个整体数据项为一个整体912.2.1 问题问题的提出解决方案:的提出解决方案:C 语语言引入了称言引入了称为结为结构体的构体的“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.2 结构体类型定义结构体类型定义struct 结构体名结构体名 数据类型名数据类型名1 成员名成员名1;数据类型名数据类型名2 成员名成员名2;数据类型名数据类型名n 成员名成员名n;struct是是关键字关键字,不能省略不能省略合法标识符合法标识符可省可省:无名结构体无名结构体成员类型可以是成员类型可以是基本型或构造型基本型或构造型以分号以分号;结尾结尾 struct Student char no9;/学号学号 char name20;/姓名姓名 char sex;/性别性别 unsigned int age;/年龄年龄 float score;/成绩成绩;struct Date short year;/年年 short month;/月月 short day;/日日;1012.2.2 结结构体构体类类型定型定义义struct 结结构体名构体名s“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.2 结构体类型定义结构体类型定义struct Student char no9;/学号学号 char name20;/姓名姓名 char sex;/性别性别 short int age;/年龄年龄 float score;/成绩成绩;namenosexagescore9字节2字节20字节1字节4字节.结构体类型定义结构体类型定义描述结构的组织形式描述结构的组织形式 注意:注意:结构体类型只是用户结构体类型只是用户自定义的一种自定义的一种数据类型数据类型,用来定,用来定义描述结构的组织形式义描述结构的组织形式,不分配不分配内存内存,只有用它来定义某个变量,只有用它来定义某个变量时,才会为该变量分配结构类型时,才会为该变量分配结构类型所需要大小的内存单元。所需要大小的内存单元。1112.2.2 结结构体构体类类型定型定义义struct Student“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。在结构体中数据类型相同的成员,既可逐个、逐行分别在结构体中数据类型相同的成员,既可逐个、逐行分别在结构体中数据类型相同的成员,既可逐个、逐行分别在结构体中数据类型相同的成员,既可逐个、逐行分别定义,也可合并成一行定义,就象一次定义多个变量一样。定义,也可合并成一行定义,就象一次定义多个变量一样。定义,也可合并成一行定义,就象一次定义多个变量一样。定义,也可合并成一行定义,就象一次定义多个变量一样。struct Student_Infostruct Student_Info char no9;char no9;/学号学号学号学号 char name20;char name20;/姓名姓名姓名姓名 char sex;char sex;/性别性别性别性别 unsigned int age;unsigned int age;/年龄年龄年龄年龄 unsigned int classno;unsigned int classno;/班级班级班级班级 float grade;float grade;/成绩成绩成绩成绩;struct Student_Infostruct Student_Info char no9,name20,sex;char no9,name20,sex;unsigned int age,classno;unsigned int age,classno;float grade;float grade;12.2.2 结构体类型定义结构体类型定义12 在在结结构体中数据构体中数据类类型相同的成型相同的成员员,既可逐个、逐行分,既可逐个、逐行分别别定定义义“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.3 结构体变量定义结构体变量定义struct 结构体类型名结构体类型名 数据类型名数据类型名1 成员名成员名1;数据类型名数据类型名n 成员名成员名n;struct 结构体类型名结构体类型名 变量列表变量列表;l 先定义结构类型,再定义结构变量先定义结构类型,再定义结构变量 struct Student char no9;char name20;char sex;unsigned int age;float score;struct Student stu1,stu2;定定义义一一个个类类型型为为 struct student 结结构构体体的的变变量量,将将会会为为该该变量分配内存,变量分配内存,大小是等于其所有成员变量的大小之和。大小是等于其所有成员变量的大小之和。sizeof(struct Student)1312.2.3 结结构体构体变变量定量定义义struct 结结构体构体类类型名型名“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.3 结构体变量定义结构体变量定义l定义结构体类型的同时定义结构体变量定义结构体类型的同时定义结构体变量structstruct 结构体类型名结构体类型名结构体类型名结构体类型名 数据类型名数据类型名数据类型名数据类型名1 1 成员名成员名成员名成员名1 1;数据类型名数据类型名数据类型名数据类型名n n 成员名成员名成员名成员名n n;变量名列表变量名列表变量名列表变量名列表;struct Studentstruct Studentchar no9;char no9;char name20;char name20;char sex;char sex;unsigned int age;unsigned int age;float score;float score;stu1,stu2stu1,stu2;structstruct char no9;char no9;char name20;char name20;char sex;char sex;unsigned int age;unsigned int age;float score;float score;stu1,stu2stu1,stu2;或或无名结构体定义无名结构体定义无名结构体定义无名结构体定义1412.2.3 结结构体构体变变量定量定义义定定义结义结构体构体类类型的同型的同时时定定义结义结构体构体“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.3 结构体变量定义结构体变量定义成员可以是结构体,结构体可以嵌套成员可以是结构体,结构体可以嵌套 struct datestruct dateint month;int month;int day;int day;int year;int year;struct studentstruct student int no;int no;char name20;char name20;struct date birthdaystruct date birthday;stu;stu;struct studentstruct student int no;int no;char name20;char name20;struct datestruct date int month;int month;int day;int day;int year;int year;birthdaybirthday;stu;stu;nononamenamebirthdaybirthdaymonthmonthdaydayyearyear1512.2.3 结结构体构体变变量定量定义义成成员员可以是可以是结结构体,构体,结结构体可以嵌构体可以嵌“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.4 结构体变量的初始化结构体变量的初始化定义定义结构体变量时给结构体成员赋值结构体变量时给结构体成员赋值structstruct 结构体类型名结构体类型名结构体类型名结构体类型名 初值表初值表初值表初值表 ;struct struct 结构体类型名结构体类型名结构体类型名结构体类型名 变量名变量名变量名变量名 =成员成员成员成员1 1的值,的值,的值,的值,成员成员成员成员n n的值的值的值的值;注意:注意:注意:注意:赋初值时,赋初值时,赋初值时,赋初值时,中间的数据顺序必须与结构体成员中间的数据顺序必须与结构体成员中间的数据顺序必须与结构体成员中间的数据顺序必须与结构体成员的定义顺序一致的定义顺序一致的定义顺序一致的定义顺序一致,否则就会出现混乱。,否则就会出现混乱。,否则就会出现混乱。,否则就会出现混乱。struct Student struct Student stu=“09122325,YangFan,M,19,90;stu=“09122325,YangFan,M,19,90;nononamenamesexsexageagescorescorestruct Studentstruct Student stu=19,stu=19,YangFanYangFan,M,“09122325,90;,M,“09122325,90;1612.2.4 结结构体构体变变量的初始化定量的初始化定义结义结构体构体变变量量时给结时给结构体成构体成“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.4 结构体变量的初始化结构体变量的初始化定义定义结构体变量时给结构体成员赋值结构体变量时给结构体成员赋值struct datestruct date int year,month,day;int year,month,day;struct Stu_Infostruct Stu_Info char no9;char no9;/学号学号学号学号 char name20;char name20;/姓名姓名姓名姓名 char sex;char sex;/性别性别性别性别 struct date birthday;struct date birthday;/生日生日生日生日 float score;float score;/成绩成绩成绩成绩;struct Stu_Infostruct Stu_Info stu=20020306,ZhangMing,M,stu=20020306,ZhangMing,M,1986,12,10,1986,12,10,90;90;1712.2.4 结结构体构体变变量的初始化定量的初始化定义结义结构体构体变变量量时给结时给结构体成构体成“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.5 结构体变量的引用结构体变量的引用 引用规则:引用规则:不能整体引用不能整体引用,只能引用变量的只能引用变量的成员成员引用方式:引用方式:结构体变量名结构体变量名.成员名成员名成员成员成员成员(分量分量分量分量)运算符运算符运算符运算符结合性结合性结合性结合性:从左向右从左向右从左向右从左向右struct studentstruct student char no9;char no9;char name20;char name20;char sex;char sex;unsigned int age;unsigned int age;float score;float score;stu1,stu2stu1,stu2;if(if(stu1=stu2stu1=stu2).(.()stu1.score=85.5;stu1.score=85.5;stu1.age=stu2.age;stu1.age=stu2.age;strcpy(stu1.no,“09122414”;)strcpy(stu1.no,“09122414”;)1812.2.5 结结构体构体变变量的引用量的引用 引用引用规则规则:不能整体引用:不能整体引用,只只“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.5 结构体变量的引用结构体变量的引用可以将可以将一个结构体变量赋值给另一个结构体变量一个结构体变量赋值给另一个结构体变量结构体嵌套时结构体嵌套时逐级引用逐级引用struct studentstruct student int no;int no;char name20;char name20;struct datestruct date int month;int month;int day;int day;int year;int year;birthdaybirthday;stu1,stu2;stu1,stu2;stu2=stu1;()stu1.birthday.month=12;结构体变量名结构体变量名结构体变量名结构体变量名.成员名成员名成员名成员名.子成员名子成员名子成员名子成员名最低级子成员名最低级子成员名最低级子成员名最低级子成员名1912.2.5 结结构体构体变变量的引用可以将一个量的引用可以将一个结结构体构体变变量量赋值给赋值给另另“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.5 结构体变量的赋值结构体变量的赋值strcpy(stu1.no,stu.no);strcpy(stu1.no,stu.no);strcpy(stu1.name,strcpy(stu1.name,stu.name);stu.name);stu1.sex=stu.sex;stu1.sex=stu.sex;stu1.age=stu.age;stu1.age=stu.age;stu1.score=stu.scorestu1.score=stu.score;struct Student stu;struct Student stu;strcpy(stu.no,“09122424);strcpy(stu.no,“09122424);strcpy(stu.name,“XuTeng);strcpy(stu.name,“XuTeng);stu.sex=M;stu.sex=M;stu.age=21;stu.age=21;stu.score=90;stu.score=90;struct Student stu1;struct Student stu1;stu1=stu;stu1=stu;如果在定义结构体变量时并未对其赋初始值,那么在程如果在定义结构体变量时并未对其赋初始值,那么在程如果在定义结构体变量时并未对其赋初始值,那么在程如果在定义结构体变量时并未对其赋初始值,那么在程序中要对它赋值的话,就只能一个一个地对其成员序中要对它赋值的话,就只能一个一个地对其成员序中要对它赋值的话,就只能一个一个地对其成员序中要对它赋值的话,就只能一个一个地对其成员逐一赋值逐一赋值逐一赋值逐一赋值,或者或者或者或者用已赋值的同类型的结构体变量对它赋值用已赋值的同类型的结构体变量对它赋值用已赋值的同类型的结构体变量对它赋值用已赋值的同类型的结构体变量对它赋值 逐一赋值逐一赋值逐一赋值逐一赋值 利用已赋值的结利用已赋值的结利用已赋值的结利用已赋值的结构体变量赋值构体变量赋值构体变量赋值构体变量赋值 2012.2.5 结结构体构体变变量的量的赋值赋值strcpy(stu1.n“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.5 结构体变量应用举例结构体变量应用举例【例例】计算某个学生计算某个学生5 5门课的平均成绩,最高分和最低分门课的平均成绩,最高分和最低分#include#include struct Studentstruct Student float score5;float score5;float avescore,maxscore,minscore;float avescore,maxscore,minscore;void main()void main()int i;int i;struct Student m;struct Student m;printf(input the score of five course:n);printf(input the score of five course:n);for(i=0;i 5;i+)for(i=0;i 5;i+)/输入输入输入输入5 5门课的成绩门课的成绩门课的成绩门课的成绩 scanf(%f,&m.scorei);scanf(%f,&m.scorei);m.avescore=0;m.avescore=0;m.maxscore=m.score0;m.maxscore=m.score0;m.minscore=m.score0;m.minscore=m.score0;for(i=0;i 5;i+)for(i=0;i m.maxscore)if(m.scorei m.maxscore)m.maxscore=m.scorei;m.maxscore=m.scorei;if(m.scorei m.minscore)if(m.scorei m.minscore)m.minscore=m.scorei;m.minscore=m.scorei;m.avescore/=5;m.avescore/=5;printf(“avescore=%4.1f,maxscore=%4.1f,printf(“avescore=%4.1f,maxscore=%4.1f,minscore=%5.1fn,minscore=%5.1fn,m.avescore,m.maxscore,m.minscore);m.avescore,m.maxscore,m.minscore);运行结果运行结果(设设5门课的成绩为:门课的成绩为:75 80 86 90 68):avescore=79.8 maxscore=90.0 minscore=68.02112.2.5 结结构体构体变变量量应应用用举举例【例】例【例】计计算某个学生算某个学生5门课门课的平的平“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.6 结构体数组结构体数组 l元素为结构体类型的数组称为结构体数组。元素为结构体类型的数组称为结构体数组。l在实际应用中,经常用结构体数组来表示具有相同数据结构在实际应用中,经常用结构体数组来表示具有相同数据结构体的一个群体。例如一个班的学员档案,一个公司的职工档案体的一个群体。例如一个班的学员档案,一个公司的职工档案等。等。结构体数组的定义结构体数组的定义形式一:形式一:形式一:形式一:struct Studentstruct Student char no9,name20,sex;char no9,name20,sex;unsigned int age;unsigned int age;float score;float score;struct Student stu10;struct Student stu10;形式二:形式二:形式二:形式二:struct Studentstruct Student char no9,name20,sex;char no9,name20,sex;unsigned int age;unsigned int age;float score;float score;stu10;stu10;形式三:形式三:形式三:形式三:structstruct char no9,name20,sex;char no9,name20,sex;unsigned int age;unsigned int age;float score;float score;stu10;stu10;2212.2.6 结结构体数构体数组组 元素元素为结为结构体构体类类型的数型的数组组称称为结为结构体构体“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.6 结构体数组与二维表的对应关系结构体数组与二维表的对应关系结构体数组就相当于一张结构体数组就相当于一张二维表二维表,表的框架对应的就是某种,表的框架对应的就是某种结构体类型,表中的每一列对应该结构体的成员,表中每一结构体类型,表中的每一列对应该结构体的成员,表中每一行信息对应该结构体数组元素各成员的具体值,表中的行数行信息对应该结构体数组元素各成员的具体值,表中的行数对应结构体数组的大小。对应结构体数组的大小。结构体类型结构体类型StudentStudentstu0stu0 stu1stu1 stu9stu9 struct Student char no9;char name20;char sex;unsigned int age;float score;stu10;2312.2.6 结结构体数构体数组组与二与二维维表的表的对应对应关系关系结结构体数构体数组组就相当就相当“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.6 结构体数组的初始化结构体数组的初始化基本格式:基本格式:struct 结构体类型结构体类型 数组数组size=初值表初值表1,初值表初值表n;例:例:例:例:struct Student stu3=20020306,ZhangMing,M,18,90,struct Student stu3=20020306,ZhangMing,M,18,90,20020307,WangHai,M,17,85,20020307,WangHai,M,17,85,20020308,LiHong,F,18,95;20020308,LiHong,F,18,95;分行初始化分行初始化全部初始化时维数可省全部初始化时维数可省全部初始化时维数可省全部初始化时维数可省struct Student stu3=20020306,ZhangMing,M,18,90,struct Student stu3=20020306,ZhangMing,M,18,90,20020307,WangHai,M,17,85,20020307,WangHai,M,17,85,20020308,LiHong,F,18,95 ;20020308,LiHong,F,18,95 ;顺序初始化顺序初始化2412.2.6 结结构体数构体数组组的初始化基本格式:例:的初始化基本格式:例:struct“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.6 结构体数组的引用结构体数组的引用引用格式:引用格式:结构体数组名结构体数组名 下标下标.成员名;成员名;struct Studentstruct Student char no9;char no9;char name20;char name20;char sex;char sex;unsigned int age;unsigned int age;float score;float score;stu10;stu10;strcpy(stu0.name,WangFei);strcpy(stu0.name,WangFei);stu1.age+;stu1.age+;printf(%s,stu0.name);printf(%s,stu0.name);2512.2.6 结结构体数构体数组组的引用引用格式:的引用引用格式:struct S“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.6 结构体数组举例结构体数组举例#include#include#include#include struct personstruct person char name20;char name20;/候选人姓名候选人姓名候选人姓名候选人姓名 int count;int count;/得票数得票数得票数得票数 leader3=Li,0,leader3=Li,0,Zhang,0,Zhang,0,Wang,0;Wang,0;void main()void main()int i,j;int i,j;char leader_name20;char leader_name20;printf(input name:n);printf(input name:n);while(1)while(1)/统计候选人得票数统计候选人得票数统计候选人得票数统计候选人得票数 gets(leader_name);gets(leader_name);/输入候选人姓名输入候选人姓名输入候选人姓名输入候选人姓名 if(strcmp(leader_name,0)=0)if(strcmp(leader_name,0)=0)/输入为输入为输入为输入为00结束结束结束结束 break;break;for(j=0;j 3;j+)for(j=0;j 3;j+)/比较是否为合法候选人比较是否为合法候选人比较是否为合法候选人比较是否为合法候选人 if(strcmp(leader_name,leaderj.name)=0)if(strcmp(leader_name,leaderj.name)=0)/合法合法合法合法 leaderj.count+;leaderj.count+;/得票数加得票数加得票数加得票数加1 1 for(i=0;i 3;i+)for(i=0;i 3;i+)/显示显示显示显示候候候候选人得票数选人得票数选人得票数选人得票数 printf(%5s:%dn,leaderi.name,leaderi.count);printf(%5s:%dn,leaderi.name,leaderi.count);【例例】统计侯选人选票(输入统计侯选人选票(输入0结束)结束)2612.2.6 结结构体数构体数组举组举例例#include-成员名成员名 或或 (*(*指针变量名指针变量名).成员名成员名stu.agestu.age=18;=18;(*p).age(*p).age=18;=18;p-p-ageage=18;=18;2912.2.7 结结构体指构体指针针定定义义:struct Stude“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.7 指向结构体类型数据的指针指向结构体类型数据的指针#include#include#include#include struct Studentstruct Student long int num;long int num;char name20;char name20;char sex;char sex;float score;float score;void main()void main()struct Student stu_1;struct Student stu_1;struct Student*p;struct Student*p;p=&stu_1p=&stu_1;stu_1.num=2009122315L;stu_1.num=2009122315L;strcpy(stu_1.name,“strcpy(stu_1.name,“王伟王伟王伟王伟););(*p).sex=m;(*p).sex=m;p-score=92.5;p-score=92.5;printf(printf(学号学号学号学号:%ldn:%ldn姓名姓名姓名姓名:%sn:%sn成绩成绩成绩成绩:%.1fn,stu_1.num,p-name,:%.1fn,stu_1.num,p-name,(*p).score);(*p).score);3012.2.7 指向指向结结构体构体类类型数据的指型数据的指针针#include“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.7 指向结构体数组的指针指向结构体数组的指针#include struct Student long int num;char name20;char sex;int age;void main()struct Student*p;struct Student stu=10101,李林李林,M,18,10102,张奋张奋,M,19,10103,王敏王敏,F,20;printf(学号学号 姓名姓名 性别性别 年龄年龄n);for(p=stup=stu;p num,p-name,p-sex,p-age);3112.2.7 指向指向结结构体数构体数组组的指的指针针#include year=2000;p-month=5;p-day=22;void main()struct date d;d.year=1999;d.month=4;d.day=23;printf(“%d,%d,%dn”,d.year,d.month,d.day);func(&d);printf(“%d,%d,%dn”,d.year,d.month,d.day);1999,4,232000,5,2212.2.8 结构体作为函数参数结构体作为函数参数p&d2000 5 22d1999 4 23d36结结构体指构体指针针做做为为参数参数struct datevoid main(“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。【例例12.7】修改例修改例12.3程序,用结构体数组作函数参数编程程序,用结构体数组作函数参数编程并输出计算学生的平均分并输出计算学生的平均分 12.2.8 结构体作为函数参数结构体作为函数参数37 【例【例12.7】修改例】修改例12.3程序,用程序,用结结构体数构体数组组作函数参数作函数参数“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.8 结构体作为函数参数结构体作为函数参数3812.2.8 结结构体作构体作为为函数参数函数参数38“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.8 结构体作为函数参数结构体作为函数参数3912.2.8 结结构体作构体作为为函数参数函数参数39“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12.2.8 结构体作为函数参数结构体作为函
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!