c语言结构体与共同体.ppt
《c语言结构体与共同体.ppt》由会员分享,可在线阅读,更多相关《c语言结构体与共同体.ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章第八章 结构体与共用体结构体与共用体【教学要求教学要求】1 1理解结构体的含义。理解结构体的含义。2 2掌握结构体类型变量的定义方法。掌握结构体类型变量的定义方法。3 3掌握结构体类型变量的引用方法。掌握结构体类型变量的引用方法。4 4掌握结构体类型变量如何在定义的同时初始化。掌握结构体类型变量如何在定义的同时初始化。5 5理解共同体的含义,掌握共同体类型变量的定义方法。理解共同体的含义,掌握共同体类型变量的定义方法。6.6.了解结构体数组的定义和数组元素的引用。了解结构体数组的定义和数组元素的引用。7 7了解指向结构体类型数据的指针的概念及使用。了解指向结构体类型数据的指针的概念及使用
2、。8 8了解链表结点的结构形式,链表的基本操作。了解链表结点的结构形式,链表的基本操作。9 9了解枚举类型的定义,及枚举类型的输入输出。了解枚举类型的定义,及枚举类型的输入输出。1010了解了解TYPEDEFTYPEDEF的作用。的作用。第八章第八章 结构体与共用体结构体与共用体1.1.结构体结构体(structstruct)2.2.共同体共同体(unionunion)3.3.结构体与共用体小结结构体与共用体小结4.4.枚举类型枚举类型(enumenum)5.5.typedeftypedef定义类型定义类型结构体(结构体(structstruct)1.1.结构体的概念结构体的概念2.2.结构体
3、数组结构体数组3.3.结构体指针结构体指针结构体的概念结构体的概念1.1.结构体的定义结构体的定义2.2.结构体变量的存储特点结构体变量的存储特点3.3.结构体变量的引用结构体变量的引用4.4.结构体的初始化结构体的初始化结构体的定义结构体的定义1 1、含义:不同类型数据的集合。、含义:不同类型数据的集合。2 2、功能:用于描述一个、功能:用于描述一个“概念概念”。(或记录)。(或记录)如:如:num name sex age score num name sex age score addraddr 10010 10010 LiFun LiFun M 18 87.5 M 18 87.5 Be
4、iJingBeiJing3 3、定义方法:定义方法:方法一:在定义结构体类型的同时,直接给出结构体变量。方法一:在定义结构体类型的同时,直接给出结构体变量。如:如:struct struct 结构体名结构体名 结构体成员变量的定义;结构体成员变量的定义;变量名变量名1 1,变量名,变量名2 2,.,变量名,变量名n n;方法二:先给出结构体类型的定义,再定义结构体变量。方法二:先给出结构体类型的定义,再定义结构体变量。如:如:struct struct 结构体名结构体名 结构体成员变量的定义;结构体成员变量的定义;例:例:;structstruct 结构体名结构体名 变量名变量名1 1,变量名
5、,变量名2 2,.,变量名,变量名n n;4 4、要点:要点:方法二:方法二:struct struct student student intint number;number;char name20;char name20;char sex;char sex;intint age;age;float score;float score;char addr30;char addr30;struct struct student student1,student2;student student1,student2;方法一:方法一:struct struct student student i
6、ntint number;number;char name20;char name20;char sex;char sex;intint age;age;float score;float score;char addr30;char addr30;student1,student2;student1,student2;请注意两种方法的不同特点:请注意两种方法的不同特点:1 1、“;”的用法;的用法;2 2、方法二可以用一个、方法二可以用一个*.h h文件来存储结构体的定义。文件来存储结构体的定义。4 4、要点:、要点:结构体名(结构体名(structstruct):用于标识一种新的数据类型,
7、用于标识一种新的数据类型,即结构体类型,可以省略。即结构体类型,可以省略。注意区分结构体类型与基本数注意区分结构体类型与基本数 据类型的不同,它是据类型的不同,它是复合数据复合数据 类型。类型。结构体成员变量与普通变量的结构体成员变量与普通变量的 定义一样,它还可以是结构体定义一样,它还可以是结构体 变量。变量。structstruct date date intint month,day,year;month,day,year;structstruct student student intint num;num;char name20;char name20;char sex;char s
8、ex;intint age;age;structstruct date birthday;date birthday;char addr30;char addr30;student1,student2;student1,student2;结构体变量的存储特点结构体变量的存储特点如:如:struct struct student student intint number;number;char name5;char name5;char sex;char sex;intint age;age;float score;float score;char addr10;char addr10;stu
9、dent1,student2;student1,student2;structstruct student student所占存储空间的所占存储空间的大小为:大小为:各成员变量所占存储单元字节数各成员变量所占存储单元字节数之和。之和。s sizeofizeof(student)(student)student1.numberstudent1.numberstudent1.name0student1.name0.student1.name4student1.name4student1.sexstudent1.sexstudent1.agestudent1.agestudent1.scorestu
10、dent1.scorestudent1.addr0student1.addr0.student1.addr9student1.addr9student2.numberstudent2.numberstudent2.name0student2.name0.student2.name4student2.name4student2.sexstudent2.sex.student1student1student2student2结构体类型变量的引用结构体类型变量的引用一、原则:通过结构体的成员来引用结构体变量。一、原则:通过结构体的成员来引用结构体变量。二、成员的引用方法为二、成员的引用方法为:结构体
11、变量名结构体变量名.成员名成员名三、要点:三、要点:1.1.结构体变量不能整体输入输出结构体变量不能整体输入输出,只能对它的成员进行操作。只能对它的成员进行操作。如如:student1.num;student1.num;2.2.如果成员本身又是一个结构体类型如果成员本身又是一个结构体类型,则要使用若干个成员运算符则要使用若干个成员运算符,逐级找到最底层的成员。逐级找到最底层的成员。如如:student1.birthday.daystudent1.birthday.day3.3.成员变量可以象一般的变量一样进行各种运算成员变量可以象一般的变量一样进行各种运算,只是在运算时要只是在运算时要加上加上
12、“.”.”运算符。运算符。4.4.可以引用成员的地址。可以引用成员的地址。结构体变量的初始化结构体变量的初始化一、只可以给主函数中或外部存储类别和静态存一、只可以给主函数中或外部存储类别和静态存储类别的结构体变量、数组赋初值。储类别的结构体变量、数组赋初值。1 1、对外部存储类型的初始化对外部存储类型的初始化.2 2、对静态存储类型的结构体变量进行初始化对静态存储类型的结构体变量进行初始化二、给结构体变量赋初值不能跨越前面的成员而二、给结构体变量赋初值不能跨越前面的成员而只给后面的成员变量赋值。只给后面的成员变量赋值。例例exp8_1:exp8_1:对外部存储类型的初始化对外部存储类型的初始化
13、.#include#include.hstruct struct studentstudent long number;long number;char name20;char name20;char sex;char sex;intint age;age;float score;float score;char addr30;char addr30;a a=99641,”Li Ping”,M,56,”Tianjin Street”;=99641,”Li Ping”,M,56,”Tianjin Street”;main()main()printfprintf(“No.:%ld(“No.:%ld
14、nnamenname:%s:%snsexnsex:%c:%cnaddressnaddress:%sn”,:%sn”,a.num,a.name,a.sex,a.a.num,a.name,a.sex,a.addraddr););例例exp8_2:exp8_2:对静态存储类型的结构体变量进行初始化对静态存储类型的结构体变量进行初始化.#include#include.hmain()main()static static struct struct studentstudent long number;long number;char name20;char name20;char sex;char
15、sex;intint age;age;float score;float score;char addr30;char addr30;a a=99641,”Li Ping”,M,56,”Tianjin Street”;=99641,”Li Ping”,M,56,”Tianjin Street”;printfprintf(“No.:%ld(“No.:%ldnnamenname:%s:%snsexnsex:%c:%cnaddressnaddress:%sn”,:%sn”,a.num,a.name,a.sex,a.a.num,a.name,a.sex,a.addraddr););结构体数组结构体数组
16、1.1.结构体数组的含义:结构体数组的含义:数组元素是结构体类型数据的数组称为结构体数组。数组元素是结构体类型数据的数组称为结构体数组。2.2.结构体数组的定义结构体数组的定义3.3.结构体数组的初始化结构体数组的初始化4.4.结构体数组的应用举例结构体数组的应用举例结构体数组的定义结构体数组的定义一、含义:若干个相同的结构体类型变量组成的数据集合。一、含义:若干个相同的结构体类型变量组成的数据集合。二、定义方法:二、定义方法:structstruct 结构体名结构体名 例如:例如:结构体成员定义;结构体成员定义;数组名数组名 元素个数元素个数;三、结构体数组的使用方法三、结构体数组的使用方法
17、1 1、通过数组的下标(或指向数组的指针)来访问结构体变量。、通过数组的下标(或指向数组的指针)来访问结构体变量。2 2、再通过结构体变量的成员实现结构体数据的访问。、再通过结构体变量的成员实现结构体数据的访问。形式为:形式为:数组名数组名 下标下标.成员名成员名如:如:stu2.namestu2.name=“Wang Ying”;=“Wang Ying”;struct struct studentstudent long number;long number;char name20;char name20;char sex;char sex;intint age;age;float scor
18、e;float score;char addr30;char addr30;structstruct student student stu3;stu3;struct struct studentstudent long number;long number;char name20;char name20;char sex;char sex;intint age;age;float score;float score;char addr30;char addr30;stu3;stu3;结构体数组的物理含义:结构体数组的物理含义:表示实体(或记录)的个数。表示实体(或记录)的个数。1 1、含义:
19、在定义结构体数组时完成数组元素的赋值、含义:在定义结构体数组时完成数组元素的赋值2 2、方法:与一般数组元素赋初值的方法相同。、方法:与一般数组元素赋初值的方法相同。struct struct studentstudent long number;long number;char name20;char name20;char sex;char sex;intint age;age;float score;float score;char addr30;char addr30;a3 a3=99641,”Li Ping”,M,56,”Tianjin Street”,=99641,”Li Ping
20、”,M,56,”Tianjin Street”,99341,”Zhang Fan”,F,78,”Beijing Road”,99341,”Zhang Fan”,F,78,”Beijing Road”,99441,”Ren Zhong”,M,34,”Shenyang Road”;99441,”Ren Zhong”,M,34,”Shenyang Road”;结构体数组的初始化结构体数组的初始化例例exp8_3:exp8_3:对候选人得票的统计程序对候选人得票的统计程序,设有三个候选人设有三个候选人,每次输入一个每次输入一个候选人的名字候选人的名字,最后统计出每个候选人的得票的结果最后统计出每个候选
21、人的得票的结果.#include#include.hstructstruct person person char name20;int count;char name20;int count;leader3 leader3=“Li”,0,”Zhang”,0,”Fun”,0;=“Li”,0,”Zhang”,0,”Fun”,0;main()main()intint i,j;char leader_name20;i,j;char leader_name20;for(i=1;i=10;i+)for(i=1;i=10;i+)scanfscanf(“%s”,leader_name);(“%s”,lead
22、er_name);for(j=0;j3;j+)for(j=0;j3;j+)if(if(strcmpstrcmp(leader_name,leaderj.name)(leader_name,leaderj.name)=0)=0)leaderj.count+;leaderj.count+;printfprintf(“n”);(“n”);for(i=0;i3;i+)for(i=0;inump-num。3 3、区分下面的两种用法:区分下面的两种用法:p-n+p-n+和和 +p-np-n1 1、结构体指针的定义:、结构体指针的定义:main()main()struct struct studentstu
23、dent long number;long number;char name20;char name20;char sex;char sex;intint age;age;float score;float score;char addr30;char addr30;a=070441,”Li Ping”,M,56,”Tianjin a=070441,”Li Ping”,M,56,”Tianjin Street”,*p=&a;Street”,*p=&a;2 2、结构体指针的使用:结构体指针的使用:a.num,a.name,a.sex,a.a.num,a.name,a.sex,a.addraddr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 结构 与共 同体
限制150内