教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 专业资料 >

C语言 第8章 结构体、共用体与枚举类型

来源:网络收集 时间:2026-09-02
导读: 第8章 结构体、共用体与枚举类型 本章要求 理解结构体类型的概念,掌握结构体变量的定义和使用 掌握结构体数组、结构体指针的定义和使用 理解共用体的概念,掌握共用体变量的定义和使用 了解枚举数据类型及自定义数据类型的使用 领会自定义数据类型标识符的

第8章 结构体、共用体与枚举类型 本章要求 理解结构体类型的概念,掌握结构体变量的定义和使用 掌握结构体数组、结构体指针的定义和使用 理解共用体的概念,掌握共用体变量的定义和使用 了解枚举数据类型及自定义数据类型的使用 领会自定义数据类型标识符的意义 理解链表的概念,初步掌握动态链表的常见操作

本章重点 结构体变量的定义和使用 链表的概念

本章难点 动态链表的常见操作1

第8章 结构体、共用体与枚举类型 8.1 8.2 8.3 8.4 8.5 8.6 8.7 结构体类型与结构体变量 结构体数组 结构体与函数 共用体 枚举类型 自定义类型标识符 动态数据结构——链表

8.1 结构体类型与结构体变量 8.1.1 结构体概述 例8-1 通过建立表8-1的学生的信息表,要求从键盘输入学生 的信息,并将学生成绩小于平均成绩的学生信息输出。学 号1001 1002 1003 1004

姓 名Zhang Li Wang Zhao

性 别M M F M

年 龄19 18 20 19

成 绩88 90 89 83

8.1 结构体类型与结构体变量#include <stdio.h> #define N 4 void main() { int num[N]; /* 存放各学生的学号 */ char name[N][10]; /* 存放各学生的姓名 */ char sex[N]; /* 存放各学生的性别*/ int age[N]; /* 存放各学生的年龄*/ float score[N]; /* 存放各学生的成绩*/ int i; float sum=0,aver; /* 表示总成绩和平均成绩 */ for(i=0;i<N;i++) { scanf("%d %s %c %d %f",&num[i],name[i],&sex[i],&age[i],&score[i]); sum+=score[i]; } aver=sum/N; printf("\n");

8.1 结构体类型与结构体变量for(i=0;i<N;i++) if (score[i]<aver) printf("%d%s%c%d%f\n", num[i],name[i],sex[i],age[i], score[i]); }

由于程序num、name、sex、age、score分别定义为互 相独立的数组,难以反映它们之间的内在联系。

8.1 结构体类型与结构体变量#include <stdio.h> #define N 4 struct student { int num; char name[20]; char sex; int age; float score; }; void main() { struct student stu[N]; int i; float sum=0,aver;

/* 定义学生类型结构体 */ /* 学号成员 */ /* 姓名成员 */ /* 性别成员 */ /* 年龄成员 */ /* 成绩成员 */

/* 定义学生结构体数组 */

/* 表示总成绩和平均成绩 */ 6

8.1 结构体类型与结构体变量for(i=0;i<N;i++) { scanf("%d%s%c%d%f", &stu[i].num,stu[i].name,&stu[i].sex, &stu[i].age,&stu[i].score); sum+=stu[i].score; } aver=sum/N; printf("\n"); for(i=0;i<N;i++) if (stu[i].score<aver) printf("%d%s%c%d%f\n", stu[i].num,stu[i].name,stu[i].sex, stu[i].age,stu[i].score); } 7

8.1 结构体类型与结构体变量 说明: 使用结构体数据,可将一个学生的数据有机组合起来,例中

的stu是个结构体数组,stu[i]表第i个学生的数组,stu[i].num 表第i个学生的学号,stu[i].name表第i个学生的姓名等。 结构体的每一个成员都是通过其

名字来引用,引用形式如下:结构体变量名. 成员名

结构体的引入为处理复杂的数据结构提供了有力的手段(如 链表等),也为函数间传递一组不同类型的数据提供了方便。 特别是对于数据结构比较复杂的大型程序提供了方便。

8.1 结构体类型与结构体变量 8.1.2 结构体的声明 定义结构体类型的一般形式: struct 结构体名 { 结构成员1; 结构成员2; …… 结构成员n; }; 其中,struct为结构体定义的关键字,不能省略。 结构体名由用户给定,即是定义的结构体类型名。 结构体中的各个成员,每个成员又有自己的数据类型,它们 可以是整型、实型、字符型、指针或结构类型等,它们都应 进行类型说明。 9

8.1 结构体类型与结构体变量 有关结构体的几点说明:

结构体类型的定义只是说明了一种结构体的组织形式,在编 译时并不为它分配存储空间。只是在定义结构体类型变量后, 才为变量按照其组织形式分配内存空间。 当定义一个结构体的成员又是一个结构体类型,这称为结构 体的嵌套定义。 struct date struct student { int year; { int num; int month; char name[20]; int day; char sex; };struct date birthday; float score; };

8.1 结构体类型与结构体变量 结构体定义可以在函数内部,也可在函数外部。在函数内部 定义的结构体,只有在函数内部使用,在函数外部定义的结 构体,从定义点起到源文件尾之间的所有函数都可使用。 结构体成员的名字可以同程序中的其他变量名相同,两者的 意义不同,不会相混。

8.1 结构体类型与结构体变量 8.1.3 结构体变量的定义 先说明结构体类型,再定义变量 struct student { int num; char name[20]; char sex; int age; float score; }; struct student stu1, stu2;

8.1 结构体类型与结构体变量 在声明类型的同时定义变量 struct 结构体名 { 成员列表; }变量名列表; struct student { int num; char name[20]; char sex; int age; float score; }stu1,stu2; 13

8.1 结构体类型与结构体变量 直接定义结构类型变量 struct { 成员列表; }变量名列表; struct { int num; char name[20]; char sex; int age; float score; }stu1,stu2; 14

8.1 结构体类型与结构体变量 对结构体变量,系统要为其分配存储空间。一个结构体 变量所占存储空间的大小,是其所含结构体成员所占存 储空间的总和,这些结构体成员所占的存储空间是由一 组连续的存储空间所组成。 也可用sizeof运算来求得,一个变量或数据类型在内存 中所占内存空间的字节数,使用形式是: sizeof(变量名) 或 sizeof(类型标识符)

8.1 结构体类型与结构体变量 8.1.4 结构体变量的引用 C语言中除两个相同

类型结构体变量可以相互整体赋值外,不能对结构体 变量名直接引用,只能对结构体变量中的成员分别进行引用,即对结构变 量的操作,如赋值、输入、输出、运算等都是通过结构变量的成员来实现 的。 结构体变量的引用格式 结构体变量名.成员名 stu1.num=10001; strcpy(,"zhang"); /* 此处不能写成 ="zhang" */ stu1.sex='M'; stu1.age=19; stu1.score=88; 不能把结构变量作为整体进行输入输出,下面的引用方式是错误的: scanf("%d%s%c%d%f",stu1); 正确的引用方式可以是: gets(); scanf("%d%c%d%f", &stu1.num,&stu1.sex,&stu1.age,&stu1.score);

8.1 结构体类型与结构体变量 结构体嵌套时逐级引用struct date { int month; int day; int year; }; struct person { char name[20]; char sex; struct date birthday; }; struct person person1; person1.birthday.month 17

8.1 结构体类型与结构体变量 同类型结构体变量间的整体赋值 结构体变量可以通过整体赋值,将一个结构体变量中的所有数据,赋给另 一个结构体类型相同的结构体变量中对应的数据成员。 例8-2 建立一个学生的基本情况表,然后将其打印输出。 #include <stdio.h> #include <string.h> main() { struct student { int num; char name[20]; char sex; int age; float score; }stu1,stu2;

8.1 结构体类型与结构体变量stu1.num=10001; strcpy(,"zhang"); stu …… 此处隐藏:2488字,全部文档内容请下载后查看。喜欢就下载吧 ……

C语言 第8章 结构体、共用体与枚举类型.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/52905.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)