结构体和共用体前提当需要处理一批不同类型的数据而这些不同类型的数据又是一个整体类似定义数据库的数据表引例从键盘输入个学生的数据信息计算每门课的平均成绩学号姓名语言高等数学大学英语李异张异周异于异张二利用模块化分解问题为四个步骤用于输入个学生的数据信息用于求每门课的平均成绩用于输出每门课的平均成绩主函数用于输入学生人数然后调用相关函数计算并输出每门课的平均成绩考虑数据类型保存学生学号保存每门课平均成绩保存学生姓名保存学生门课的成绩新知识语言允许用户自己指定不同类型数据组合成一种数据结构称结构体其结构体数据类型说明的一般形式为结构体名是语言中的保留字是结构体的标志后跟结构体名类型名成员名类型名成员名不可省略的分号关于结构体的几点说明结构体类型名结构体名结构体成员类型说明可以是任何一种已定义过的数据类型如等结构体成员名可以和程序中已定义的变量名相同也可以和不同的结构体类型中的成员名相同彼此独立互不影响概念结构体变量先定义后使用即必须先定义了结构体名才能用结构体定义的三种方法先构造结构体类型再定义结构体变量不同类型的数据项用一对大括号括起来构成成员列表说明定义结构体变量可以加上结构体类型名进行说明之后定义两个结构体变量构造结构体类型的同时定义结构体变量直接将结构体变量写在结构体成员列表之后注意结构体的分号在变量之后直接定义结构体变量注意没有提供结构体名一般不建议使用此种方式定义重要知识点结构体变量的内存分配例题计算结构体变量及其各成员项所占内存的大小结构体变量的初始化变量在定义的时候可以给其赋初值如下张三省略也要有逗号结构体变量的引用结构体变量成员的引用格式为结构体变量名成员名成员运算符优先级最高注意不能对整个结构体变量成员进行输入和输出整个结构体变量的引用注语句的作用是为已有的一种数据类型定义一个新的数据类型名也就是别名这样可以跨平台使用等价于说明等价字节字节字节字节结构体变量一经定义计算机系统在程序编译时会在内存中为结构体变量分配一块连续的空间其大小为结构体中所有成员项数据所占字节数之和用结构体类型名或结构体变量名测定存放在地址连续的存储单元中用法引申等价于结构体数组结构体变量也可以为结构体数组定义采用三种方法同变量如下结构体数组的初始化张三张三张三结构体指针保存结构体变量地址的变量就是结构体指针变量简称结构体指针解释类比结构体成员的访问方式结构体变量名成员名等价于等价于指向运算符是专门为指针变量设置的因为成员运算符优先级最高所以此处需要加上打小括号如上是三种访问结构体变量的成员结构体变量名成员名结构体指针变量名成员名结构体指针变量名成员名链表是一种物理存储单元上非连续的非顺序的存储结构指针链接的形式实现元素的关系是头指针指向第一个节点即存储第一个节点的首地址链表中的最后一个节点没有下一个节点所以最后一个家电的指针域存放的是一个空地址前驱后继只包含一个后继指针称为单链表链表中都包含的节点个数称为链表的长度张三张三张三动态内存管理函数函数原型分配一段长为的连续空间实例函数原型个长度为的连续空间实例函数原型释放指针所指向的内存空间实例注插入节点删除节点特殊为第一个节点共用体不同变量存放在同一段内存中其长度应为变量成员中占最大的字节数类型名类型名成员名枚举将数值一一列举出来枚举是常量不可以赋值枚举名枚举常量列表其值默认为改变其值枚举变量