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