第7章 结构体和共用体
第7章 结构体和共用体
【案例1】案例描述 案例要求输入一名学生的学号、姓名、年龄和身高等信息,然后 再把所有输入的信息一一输出到屏幕上。通过之前的学习,会发现此 案例难度并不大,但和之前不同的是,要求使用结构体的相关知识解 决此问题,接下来请认真阅读案例分析
【案例1】-案例描述 案例要求输入一名学生的学号、姓名、年龄和身高等信息,然后 再把所有输入的信息一一输出到屏幕上。通过之前的学习,会发现此 案例难度并不大,但和之前不同的是,要求使用结构体的相关知识解 决此问题,接下来请认真阅读案例分析
【案例1】-案例分析 学生信息包括学号、姓名、年龄和身高等,处理这些信息时,它们 属于同一个处理对象,却又具有不同的数据类型,比如学号是整型, 姓名是字符串。每当增加、删除或者查询学生信息的时候,需要处理 这个学生的所有数据,因此,有必要把学生的这些数据定义成一个整 体。 虽然数组也能处理一组相关的数据,但是它们数据类型必须是相 同的,对于刚刚这一组不同数据类型的数据,C语言中给出了另一种构 造数据类型一结构体。它与数组最大的区别就在于数组中所有元素的 数据类型都必须相同,而结构体中的各成员类型可以不同。 为了更好地完成此案例,请认真学习结构体的相关知识
【案例1】-案例分析 学生信息包括学号、姓名、年龄和身高等,处理这些信息时,它们 属于同一个处理对象,却又具有不同的数据类型,比如学号是整型, 姓名是字符串。每当增加、删除或者查询学生信息的时候,需要处理 这个学生的所有数据,因此,有必要把学生的这些数据定义成一个整 体。 虽然数组也能处理一组相关的数据,但是它们数据类型必须是相 同的,对于刚刚这一组不同数据类型的数据,C语言中给出了另一种构 造数据类型——结构体。它与数组最大的区别就在于数组中所有元素的 数据类型都必须相同,而结构体中的各成员类型可以不同。 为了更好地完成此案例,请认真学习结构体的相关知识
【案例1)-必备知识 1 结构体类型和结构体变量 2 typedef-一给数据类型起别名
【案例1】-必备知识 1 结构体类型和结构体变量 2 typedef—给数据类型起别名
【案例1】-必备知识 结构体是一种构造数据类型,把不同类型的数据整 合在一起,每一个数据都称为该结构体类型的成员
结构体是一种构造数据类型,把不同类型的数据整 合在一起,每一个数据都称为该结构体类型的成员。 【案例1】-必备知识
【案例1】-必备知识 ·结构体类型定义 在程序设计中,使用结构体类型时,首先要对结构体类型的组成进 行描述,结构体类型的定义方式如下: struct结构体类型名称 数据类型成员名1; 数据类型成员名2 数据类型成员名n;
• 结构体类型定义 − 在程序设计中,使用结构体类型时,首先要对结构体类型的组成进 行描述,结构体类型的定义方式如下: struct 结构体类型名称 { 数据类型 成员名1; 数据类型 成员名2; … 数据类型 成员名n; }; 【案例1】-必备知识
【案例1】-必备知识 。结构体类型的定义 1、结构体类型定义以关键字struct开头; 注意 2、定义好一个结构体类型后,并不分配内存空间: 3、结构体类型定义末尾括号后的分号不可缺少; 4、结构体类型的成员可以是一个结构体变量,但 不能是自身结构体类型的变量
1、结构体类型定义以关键字struct开头; 2、定义好一个结构体类型后,并不分配内存空间; 3、结构体类型定义末尾括号后的分号不可缺少; 4、结构体类型的成员可以是一个结构体变量,但 不能是自身结构体类型的变量。 • 结构体类型的定义 【案例1】-必备知识
【案例1】必备知识 ·结构体变量的定义 一定义了结构体类型,它相当于一个模型,其中并无具体数据,系统也不 会为它分配实际的内存空间。为了能在程序中使用结构体类型的数据, 应该定义结构体类型的变量,并在其中存放具体的数据。 1先定义结构体类型,再定义结构体变量 2在定义结构体类型的同时定义结构体变量 3直接定义结构体变量
• 结构体变量的定义 − 定义了结构体类型,它相当于一个模型,其中并无具体数据,系统也不 会为它分配实际的内存空间。为了能在程序中使用结构体类型的数据, 应该定义结构体类型的变量,并在其中存放具体的数据。 1.先定义结构体类型,再定义结构体变量 2.在定义结构体类型的同时定义结构体变量 3.直接定义结构体变量 【案例1】-必备知识
【案例1】-必备知识 。结构体变量的定义 结构体类型是用户自定义的一种数据类型,它 注意 同前面所介绍的简单数据类型一样,在编译时 对结构体类型不分配空间。只有用它来定义某 个变量时,才会为该结构体变量分配结构体类 型所需大小的内存单元
结构体类型是用户自定义的一种数据类型,它 同前面所介绍的简单数据类型一样,在编译时 对结构体类型不分配空间。只有用它来定义某 个变量时,才会为该结构体变量分配结构体类 型所需大小的内存单元。 • 结构体变量的定义 【案例1】-必备知识
【案例1】-必备知识 ·结构体变量的内存分配 一结构体变量占据的内存大小是按照字节对齐的机制来分配的。通常情况 下,字节对齐满足两个原则。 1.结构体的每个成员变量相对于结构体首地址的偏移量,是该成 员变量的基本数据类型(不包括结构体、数组等)大小的整数 倍,如果不够,编译器会在成员之间加上填充字节。 2.结构体的总大小为结构体最宽基本类型成员大小的整数倍,如 果不够,编译器会在最末一个成员之后加上填充字节
• 结构体变量的内存分配 − 结构体变量占据的内存大小是按照字节对齐的机制来分配的。通常情况 下,字节对齐满足两个原则。 1. 结构体的每个成员变量相对于结构体首地址的偏移量,是该成 员变量的基本数据类型(不包括结构体、数组等)大小的整数 倍,如果不够,编译器会在成员之间加上填充字节。 2. 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如 果不够,编译器会在最末一个成员之后加上填充字节。 【案例1】-必备知识