C语言课件(王曙燕)chp8结构体与共用体.ppt
《C语言课件(王曙燕)chp8结构体与共用体.ppt》由会员分享,可在线阅读,更多相关《C语言课件(王曙燕)chp8结构体与共用体.ppt(32页珍藏版)》请在三一办公上搜索。
1、第八章 结构体和共用体,结构体类型和变量定义结构体数组结构体和函数共用体枚举类型Typedef语句,8.1 结构体类型和变量定义 简单类型是由系统预定义的 如int、float、char等 结构体类型是根据需要由程序员自行定义,因此在使用之前必须先定义结构体类型结构体类型定义格式:struct 结构体类型标识符 结构体成员表;;,struct 结构体名 类型名 成员名;类型名 成员名;.;,先定义结构体类型,再定义结构体变量一般形式:,struct 结构体名 类型名 成员名;类型名 成员名;.;struct 结构体名 变量名表列;,特点:常用方法在该定义后的任意位置仍可用该结构体类型来定义其他
2、 变量适用于需要大量引用该结构体类型的情况可把通用的类型定义集中在一个单独的源文件中,定义结构体类型的同时定义结构体变量一般形式:,struct 结构体名 类型名 成员名;类型名 成员名;.变量名表列;,特点:简略形式,类型定义和变量定义合在一起适用于该结构体类型引用不太多的情况,直接定义结构体变量一般形式:,struct 类型标识符 成员名;类型标识符 成员名;.变量名表列;,特点:适用于一次性定义该结构体类型变量的场合(因为没有定义结构体类型名,所以不能在别处用它来定义其他结构体变量),说明结构体类型与结构体变量概念不同类型:不分配内存;变量:分配内存类型:不能赋值、存取、运算;变量:可以
3、结构体类型定义可嵌套,结构体变量的初始化 对结构体中的各成员变量赋初值一般格式:结构体类型名 结构体变量=初始化值列表;,例 struct student int num;char name20;char sex;int age;char addr30;struct student stu1=112,“Wang Lin”,M,19,“200 Beijing Road”;,说明初始化值列表中初始化数据之间用逗号分隔。初始化数据的个数一般与成员的个数相同,若小于成员数,则剩余的成员将被自动初始化为0。初始化数据的类型要与相应成员变量的类型一致。初始化时只能对整个结构体变量进行,不能仅对结构体类型中
4、的某些成员进行初始化赋值。,结构体变量的引用对结构体变量成员的引用 在C语言程序中,不允许对结构变量整体进行输入输出操作和除赋值外的各种运算,只能是对其成员进行此类操作。引用结构体变量成员的一般形式:结构体变量名.成员名说明:其中“.”是结构体成员运算符,其优先级别最高,结合性是 自左至右。结构体成员扮演的角色和同类型的普通变量完全一样。所以,结构体成员还可进行该成员类型允许的各种运算操作,struct d_type int year;int month;int day;;struct s_type char num7;char name21;char sex;struct d_type bi
5、rthday;float score;char address31;,对结构体变量整体的引用对结构变量整体只能做赋值类的操作可以相互赋值,但注意相互赋值的两个结构体变量必须是 同一个结构体类型,s2=s1;s2.birthday=s1.birthday;,可作为函数的实参到形参的值传递、或函数返回值,详见 下节。,8.3 结构体数组 数组是由相同数据类型的元素组成的,当用相同类 型的结构体作元素就可构成结构体数组。虽然每个元素的内部含不同类型的成员,但从整体上看,每个元素的类型是相同的。结构体数组的定义,先定义后使用,三种形式:,struct student int num;char name
6、20;char sex;int age;struct student stu2;,结构体数组初始化格式:结构体类型名 结构体数组名 数组长度=初始化值列表;注意:一一对应如果初始值的个数小于对应元素的成员个数,则剩余成 员将被初始化为默认值,struct student int num;char name20;char sex;int age;struct student stu=100,“Wang Lin”,M,20,101,“Li Gang”,M,19,110,“Liu Yan”,F,19;,例 struct student int num;char name20;char sex;int
7、 age;stu=,;,例 struct int num;char name20;char sex;int age;stu=,;,结构体数组引用:遵循数组元素、结构体变量的引用法则,一般形式:结构体数组名下标.成员名,struct student int num;char name20;char sex;int age;str3;,说明:可以将一个结构体数组元素赋值给同一结构体类型数组中另一个元素,或赋给同一类型的变量。例:若数组s的元素类型与变量s0的类型为相同的结构体类型时,要交换两个数组元素,则:s0=si;si=sj;sj=s0;不能把结构体数组元素整体直接进行输入或输出。,例8.2
8、用结构体数组存储学生信息,每个学生有姓名、学号和成绩。从键盘按学号顺序输入N名学生信息,在按成绩从高到低的顺序输出各学生的全部信息。,分析:1、结构体数组(成员变量:姓名、学号、成绩)2、按成绩排序(一维数组排序),#define N 4#include struct int num;charname11;intscore;t,sN;main()int i,j,k;printf(“n请输入第一个学生学号”);scanf%d,printf“n请输入对应学生姓名、成绩”;,for(i=0;iN;i+)printf(“%d”,si.num=k+i);Scanf(“%s%d”,si.name,for(
9、i=0;iN;i+)k=i;for(j=i+1;jN;j+)if(sk.scoresj.score)k=j;if(k!=i)t=si;si=sk;sk=t;printf(“按成绩排序输出:n”);for(i=0;iN;i+)printf(“%d%-10s%5dn”,si.num,si.name,si.score);,8.4 结构体和函数结构体变量作函数参数结构体变量成员作函数参数 结构体变量中的所有成员都可作为函数参数,struct stud_type char name10;long num;char sex;s1;,现将结构体变量s1的成员分别传递给函数 f1,f2,f3:f1(s1.na
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课件 王曙燕 chp8 结构 共用

链接地址:https://www.31ppt.com/p-6504324.html