【教学课件】第9章结构体和共用体.ppt
《【教学课件】第9章结构体和共用体.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第9章结构体和共用体.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 The C Programming Language Chapter 9 Structures and Unions第九章第九章 结构体与共用体结构体与共用体w9.1 结构体结构体&结构体是结构体是一种一种构造构造数据类型数据类型&用途:把用途:把不同类型不同类型的数据组合成一个整体的数据组合成一个整体-自定义自定义数据类型数据类型结构体类型定义结构体类型定义struct 结构体名结构体名 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.;成员类型可以是成员类型可以是基本型或构造型基本型或构造型struct是是关键字关键字,不能省略不能省略合法标识符合法标识符可
2、省可省:无名结构体无名结构体 The C Programming Language Chapter 9 Structures and Unions例例 struct student int num;char name20;char sex;int age;float score;char addr30;namenumsexagescoreaddr2字节字节2字节字节20字节字节1字节字节4字节字节30字节字节.The C Programming Language Chapter 9 Structures and Unions例例 struct student int num;char name
3、20;char sex;int age;float score;char addr30;struct student stu1,stu2;w 结构体变量的定义结构体变量的定义先定义结构体类型,再定义结构体变量先定义结构体类型,再定义结构体变量一般形式:一般形式:struct 结构体名结构体名 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.;struct 结构体名结构体名 变量名表列变量名表列;例例#define STUDENT struct student STUDENT int num;char name20;char sex;int age;float sc
4、ore;char addr30;STUDENT stu1,stu2;The C Programming Language Chapter 9 Structures and Unions定义结构体类型的同时定义结构体变量定义结构体类型的同时定义结构体变量一般形式:一般形式:struct 结构体名结构体名 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.变量名表列变量名表列;例例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;The C Pro
5、gramming Language Chapter 9 Structures and Unions直接定义结构体变量直接定义结构体变量一般形式:一般形式:struct 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.变量名表列变量名表列;例例 struct int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;用用无名结构体无名结构体直接定义直接定义变量变量只能一次只能一次 The C Programming Language Chapter 9 Structures and
6、Unions说明说明结构体类型与结构体变量概念不同结构体类型与结构体变量概念不同类型类型:不分配内存不分配内存;变量变量:分配内存分配内存类型类型:不能赋值、存取、运算不能赋值、存取、运算;变量变量:可以可以结构体可嵌套结构体可嵌套结构体成员名与程序中变量名可相同,不会混淆结构体成员名与程序中变量名可相同,不会混淆结构体类型及变量的作用域与生存期结构体类型及变量的作用域与生存期例例 struct date int month;int day;int year;struct student int num;char name20;struct date birthday;stu;numnameb
7、irthdaymonthdayyear例例 struct student int num;char name20;struct date int month;int day;int year;birthday;stu;numnamebirthdaymonthdayyear The C Programming Language Chapter 9 Structures and Unionsw 结构体变量的引用结构体变量的引用引用规则引用规则 结构体变量结构体变量不能整体引用不能整体引用,只能引用变量只能引用变量成员成员可以将一个结可以将一个结构体变量赋值给另一个结构体变量构体变量赋值给另一个结构
8、体变量结构体嵌套时结构体嵌套时逐级引用逐级引用成员成员(分量分量)运算符运算符优先级优先级:1结合性结合性:从左向右从左向右引用方式:引用方式:结构体变量名结构体变量名.成员名成员名例例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;stu1.num=10;stu1.score=85.5;stu1.score+=stu2.score;stu1.age+;例例 struct student int num;char name20;char sex;int age;floa
9、t score;char addr30;stu1,stu2;printf(“%d,%s,%c,%d,%f,%sn”,stu1);()例例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;stu2=stu1;()例例 struct student int num;char name20;struct date int month;int day;int year;birthday;stu1,stu2;numnamebirthdaymonthdayyearstu1.birth
10、day.month=12;例例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;if(stu1=stu2).()The C Programming Language Chapter 9 Structures and Unionsw 结构体变量的初始化结构体变量的初始化形式一:形式一:struct 结构体名结构体名 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.;struct 结构体名结构体名 结构体变量结构体变量=初始数据初始数据;例例 s
11、truct student int num;char name20;char sex;int age;char addr30;struct student stu1=112,Wang Lin,M,19,200 Beijing Road;The C Programming Language Chapter 9 Structures and Unions形式二:形式二:struct 结构体名结构体名 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.结构体变量结构体变量=初始数据初始数据;例例 struct student int num;char name20;cha
12、r sex;int age;char addr30;stu1=112,Wang Lin,M,19,200 Beijing Road;The C Programming Language Chapter 9 Structures and Unions形式三:形式三:struct 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.结构体变量结构体变量=初始数据初始数据;例例 struct int num;char name20;char sex;int age;char addr30;stu1=112,Wang Lin,M,19,200 Beijing Road;The
13、 C Programming Language Chapter 9 Structures and Unionsw9.3 结构体数组结构体数组结构体数组的定义结构体数组的定义三种形式:三种形式:形式一形式一:struct student int num;char name20;char sex;int age;struct student stu2;形式二形式二:struct student int num;char name20;char sex;int age;stu2;形式三形式三:struct int num;char name20;char sex;int age;stu2;numna
14、mesexagenumnamesexagestu0stu125B The C Programming Language Chapter 9 Structures and Unions结构体数组初始化结构体数组初始化例例 struct int num;char name20;char sex;int age;stu=,;顺序初始化顺序初始化: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;例例 str
15、uct student int num;char name20;char sex;int age;stu=,;分行初始化分行初始化: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
16、;int age;str3;stu1.age+;strcpy(stu0.name,ZhaoDan”);The C Programming Language Chapter 9 Structures and Unions例例1:计算学生的平均成绩和不及格人数:计算学生的平均成绩和不及格人数struct student int num;char name20;float score;student15=1001,Li ping,55,1002,Zhang ping,80,1003,Wang fang,75,1004,Cheng lin,82,1005,Wu yong,94;main()int i,
17、c=0;float average,s=0;for(i=0;i5;i+)s+=student1i.score;if(student1i60)c+=1;average=s/5;printf(average=%fncount=%dn,average,c);The C Programming Language Chapter 9 Structures and Unions例例2:建立同学通讯录:建立同学通讯录#include stdio.h#define NUM 3struct mem char name20;char phone10;main()struct mem manNUM;int i;fo
18、r(i=0;iNUM;i+)printf(input name:);gets(mani.name);printf(input phone:);gets(mani.phone);printf(namettphonenn);for(i=0;i成员名成员名结构体变量名结构体变量名.成员名成员名指向运算符指向运算符优先级优先级:1:1结合方向:从左向右结合方向:从左向右例例 指向结构体的指针变量指向结构体的指针变量例例3:指向结构体变量的指针的应用:指向结构体变量的指针的应用struct student int num;char name20;float score;student1=1001,Zha
19、ng,75.5,*spoint;main()spoint=&student1;printf(Number=%d,Name=%s,student1.num,student1.name);printf(Score=%fn,student1.score);printf(Number=%d,Name=%s,(*spoint).num,(*spoint).name);printf(Score=%fn,(*spoint).score);printf(Number=%d,Name=%s,spoint-num,spoint-name);printf(Score=%fn,spoint-score);例例 int
20、 n;int *p=&n;*p=10;n=10struct student stu1;struct student *p=&stu1;stu1.num=101;(*p).num=101 The C Programming Language Chapter 9 Structures and Unions指向结构体数组的指针指向结构体数组的指针例例3:指向结构体数组的指针指向结构体数组的指针struct student int num;char name20;char sex;int age;stu3=10101,Li Lin,M,18,10102,Zhang Fun,M,19,10104,Wan
21、g Min,F,20;main()struct student*p;for(p=stu;pnum,p-name,p-sex,p-age);numnamesexagestu0pstu1stu2p+1 The C Programming Language Chapter 9 Structures and Unions9.5.1 9.5.1 动态存储分配和链表的概念动态存储分配和链表的概念 动态存储分配:动态存储分配:由程序员控制的存储分配方法,根据需由程序员控制的存储分配方法,根据需要临时分配内存单元以存放有用数据,当不要临时分配内存单元以存放有用数据,当不用时,又可以释放存储单元,以便其用于分用
22、时,又可以释放存储单元,以便其用于分配给其它数据使用。配给其它数据使用。链表:链表:链表是动态进行存储分配的一种结构。若链表是动态进行存储分配的一种结构。若干数据干数据(每个数据组称为一个结点每个数据组称为一个结点)按一定的按一定的原则连接起来。原则连接起来。w9.5 链表链表 The C Programming Language Chapter 9 Structures and Unions1249A1356B1475C1021DNULLhead1249135614751021简单的链表简单的链表:设置一指针变量,存放第一个结点的地址,设置一指针变量,存放第一个结点的地址,称为头指针,一般以
23、称为头指针,一般以headhead命名。命名。最后一个结点的地址项不指向任何结点,最后一个结点的地址项不指向任何结点,赋以值赋以值NULLNULL。链表中每一个元素称为一个结点链表中每一个元素称为一个结点,结点是结点是一组数据一组数据,包括用户需要的实际数据和下包括用户需要的实际数据和下一个结点的地址。一个结点的地址。前一个结点指向下一个结点前一个结点指向下一个结点,只有通过前只有通过前一个结点才能找到下一个结点。一个结点才能找到下一个结点。The C Programming Language Chapter 9 Structures and Unions用用c c语言实现链表结构语言实现链表
24、结构:包含指针项的包含指针项的结构体结构体就是一个结点。就是一个结点。定义结点:定义结点:struct studentstruct studentint num;int num;float score;float score;struct studentstruct student*next;*next;30109910189.53028head301099103904016302899107854016NULLABCnumscorenext The C Programming Language Chapter 9 Structures and Unions例例 建立一个简单链表建立一个简单链
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 结构 共用
限制150内