C语言程序设计案例教程 (9)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【案例1】-必备知识
• 结构体变量的初始化
在对结构体初始化时,如果只初始化其中一部 分成员,则要对前面的成员初始化,后面的成 员可以空余,因为给成员变量赋值时,编绎器 是按成员从前往后匹配,而不是按数据类型自 动去匹配。
【案例1】-必备知识
• 结构体变量的引用
− 定义并初始化结构体变量的目的是使用结构体变量中的成员。在C语 言中,引用结构体变量中一个成员的方式如下所示: 结构体变量名.成员名
【案例1】-来自百度文库例实现
− 案例设计
1 定义结构体数据类型Student,其中包括学生的学号、姓名、年龄和身高四个成员;
2 采用自定义数据类型Student定义变量stu;
3 4
使用scanf函数读入个人信息到变量stu中;
用成员访问运算符访问变量stu各成员,并使用printf函数将其输出。
案例代码(详见教材代码实现)
【案例2】-案例描述
此案例是对案例1的补充,案例1中使用结构体变量存储了小明的学 号、姓名、年龄和身高等信息,此案例要求用两种方法把小明的基本 信息输出到屏幕上。
【案例2】-案例分析
实现本案例有两种方法。第一种方法是:在引用各成员时,结构体 变量使用成员运算符“.”访问成员。另一种方法将用到一个新的知识 ,即结构体指针。顾名思义,指针指向结构体,它的用法与一般指针 没有太大差异。它使用指向运算符“->”访问结构体内各成员。接下 来将围绕结构体指针变量进行详细讲解。
【案例1】-必备知识
• typedef——给数据类型取别名
− typedef关键字用于为现有数据类型取别名。 typedef 数据类型 别名 (1)为基本类型取别名 typedef int ZX; ZX i,j,k;
(2)为数组类型取别名
typedef char NAME[10]; NAME class1,class2; (3)为结构体取别名 typedef struct Student{….}STU; STU stu1;
struct 结构体类型名称 { 数据类型 成员名1; 数据类型 成员名2; … 数据类型 成员名n; };
【案例1】-必备知识
• 结构体类型的定义
1、结构体类型定义以关键字struct开头; 2、定义好一个结构体类型后,并不分配内存空间; 3、结构体类型定义末尾括号后的分号不可缺少; 4、结构体类型的成员可以是一个结构体变量,但 不能是自身结构体类型的变量。
占1个字节 填充7个字节 s 成员 成员a a 占8个字节 成员 成员b b 占4个字节 占2个字节 填充2个字节 成员 成员c c 成员 成员d d
【案例1】-必备知识
• 结构体变量的初始化
− 由于结构体变量中存储的是一组类型不同的数据,因此为结构体变量初 始化的过程,其实就是为结构体中各个成员初始化的过程。根据结构体 变量定义方式的不同,结构体变量初始化的方式可分为两种。 1.在定义结构体类型和结构体变量的同时,对结构体变量初始化 2.定义好结构体类型后,对结构体变量初始化
员变量的基本数据类型(不包括结构体、数组等)大小的整数
倍,如果不够,编译器会在成员之间加上填充字节。 2. 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如
果不够,编译器会在最末一个成员之后加上填充字节。
【案例1】-必备知识
• 结构体变量的内存分配
struct { char a; double b; int c; short d; }S;
第9章 结构体和共用体
作业点评
– 请思考C语言中的常用的预处理指令有哪些,各自具 有什么特点。 – 请思考一下条件编绎的格式有几种,各自有什么特 点。
预习检查
– 现在要统计一组学生信息,包括学生姓名、学号、 地址、联系电话,请定义一个数据类型来统计学生 信息。
学习目标
3
结构体变量的引用 共用体 链表 结构体与数组、指针和
3.直接定义结构体变量
【案例1】-必备知识
• 结构体变量的定义
结构体类型是用户自定义的一种数据类型,它 同前面所介绍的简单数据类型一样,在编译时 对结构体类型不分配空间。只有用它来定义某 个变量时,才会为该结构体变量分配结构体类
型所需大小的内存单元。
【案例1】-必备知识
• 结构体变量的内存分配
− 结构体变量占据的内存大小是按照字节对齐的机制来分配的。通常情况 下,字节对齐满足两个原则。 1. 结构体的每个成员变量相对于结构体首地址的偏移量,是该成
【案例1】-必备知识
1 结构体类型和结构体变量 2 typedef—给数据类型起别名
【案例1】-必备知识
结构体是一种构造数据类型,把不同类型的数据整 合在一起,每一个数据都称为该结构体类型的成员。
【案例1】-必备知识
• 结构体类型定义
− 在程序设计中,使用结构体类型时,首先要对结构体类型的组成进 行描述,结构体类型的定义方式如下:
【案例1】-必备知识
• 结构体变量的定义
− 定义了结构体类型,它相当于一个模型,其中并无具体数据,系统也不 会为它分配实际的内存空间。为了能在程序中使用结构体类型的数据, 应该定义结构体类型的变量,并在其中存放具体的数据。 1.先定义结构体类型,再定义结构体变量 2.在定义结构体类型的同时定义结构体变量
1
函数结合使用
掌握
结构体变量的定义及初始化
typedef关键字的使用
2
【案例1】-案例描述
案例要求输入一名学生的学号、姓名、年龄和身高等信息,然后再 把所有输入的信息一一输出到屏幕上。通过之前的学习,会发现此案 例难度并不大,但和之前不同的是,要求使用结构体的相关知识解决 此问题,接下来请认真阅读案例分析。
【案例1】-案例分析
学生信息包括学号、姓名、年龄和身高等,处理这些信息时,它们 属于同一个处理对象,却又具有不同的数据类型,比如学号是整型, 姓名是字符串。每当增加、删除或者查询学生信息的时候,需要处理 这个学生的所有数据,因此,有必要把学生的这些数据定义成一个整 体。 虽然数组也能处理一组相关的数据,但是它们数据类型必须是相同 的,对于刚刚这一组不同数据类型的数据,C语言中给出了另一种构造 数据类型——结构体。它与数组最大的区别就在于数组中所有元素的 数据类型都必须相同,而结构体中的各成员类型可以不同。 为了更好地完成此案例,请认真学习结构体的相关知识。
相关文档
最新文档