C语言课件-第10讲.ppt

上传人(卖家):三亚风情 文档编号:3184432 上传时间:2022-07-30 格式:PPT 页数:33 大小:274.01KB
下载 相关 举报
C语言课件-第10讲.ppt_第1页
第1页 / 共33页
C语言课件-第10讲.ppt_第2页
第2页 / 共33页
C语言课件-第10讲.ppt_第3页
第3页 / 共33页
C语言课件-第10讲.ppt_第4页
第4页 / 共33页
C语言课件-第10讲.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、2022-7-291 Program Design in C LanguagePage第十讲第十讲第十章第十章 结构体和共用体结构体和共用体 结构体类型的定义结构体类型的定义结构体类型变量的定义结构体类型变量的定义结构体类型变量的初始化和引用结构体类型变量的初始化和引用结构体数组结构体数组2022-7-292 Program Design in C LanguagePage9.1 结构体 结构体是结构体是数目固定数目固定、类型不同类型不同的若干变量的若干变量(成员成员)的有序集合,在内存中占据一段连续的存储空间。的有序集合,在内存中占据一段连续的存储空间。在程序中使用结构体,必须先做两项工作:

2、在程序中使用结构体,必须先做两项工作:1)定义结构体类型:描述该结构体的成员名称、)定义结构体类型:描述该结构体的成员名称、成员类型;成员类型;2)定义结构体变量:根据结构体类型为定义的)定义结构体变量:根据结构体类型为定义的结构体变量分配存储空间。结构体变量分配存储空间。2022-7-293 Program Design in C LanguagePage9.1.1 结构体类型的定义 结构体类型定义的一般格式为:结构体类型定义的一般格式为:struct 结构体名结构体名 类型名类型名1 成员名成员名1;类型名类型名2 成员名成员名2;类型名类型名n 成员名成员名n;2022-7-294 Pr

3、ogram Design in C LanguagePage9.1.1 结构体类型的定义 结构体类型定义的格式说明结构体类型定义的格式说明:struct:关键字,是定义结构体类型的标志。:关键字,是定义结构体类型的标志。结构体名结构体名:标识符,其命名规则同变量名。:标识符,其命名规则同变量名。struct 结构体名结构体名:结构体类型名,作用等同:结构体类型名,作用等同于于int、float等关键字,用于定义结构体变量。等关键字,用于定义结构体变量。类型名类型名1n:说明了结构体成员的数据类型。:说明了结构体成员的数据类型。成员名成员名1n:用户定义的一个或多个结构体:用户定义的一个或多个结

4、构体成员的名称,其命名规则同变量名。多个同成员的名称,其命名规则同变量名。多个同类型的成员彼此间用逗号分隔。类型的成员彼此间用逗号分隔。2022-7-295 Program Design in C LanguagePage9.1.1 结构体类型的定义 结构体类型定义举例结构体类型定义举例:struct _Student char id10;/*学号学号*/char name10;/*姓名姓名*/int score3;/*成绩成绩*/int sum;/*总分总分*/;2022-7-296 Program Design in C LanguagePage9.1.2 结构体类型变量的定义 结构体类型

5、的定义只是指出了该结构体的组成情结构体类型的定义只是指出了该结构体的组成情况,系统并不会为它分配实际的存储单元。应在况,系统并不会为它分配实际的存储单元。应在定义了结构体类型以后,再定义该结构体类型的定义了结构体类型以后,再定义该结构体类型的变量(简称结构体变量),以便在结构体变量中变量(简称结构体变量),以便在结构体变量中存放具体的数据。结构体变量的定义方式有三种:存放具体的数据。结构体变量的定义方式有三种:先定义结构体类型,再定义结构体变量。先定义结构体类型,再定义结构体变量。在定义结构体类型的同时定义结构体变量。在定义结构体类型的同时定义结构体变量。直接定义结构体变量。直接定义结构体变量

6、。2022-7-297 Program Design in C LanguagePage9.1.2 结构体类型变量的定义 方式一:方式一:若事先已定义了结构体类型,那么直接用下面的若事先已定义了结构体类型,那么直接用下面的格式定义结构体变量:格式定义结构体变量:结构体类型名结构体类型名 结构体变量名结构体变量名;例如:例如:struct _Student stu1,stu2;stu1和和stu2的存储形式为:的存储形式为:sumscore2score0name9name0id9id010字节字节10字节字节6字节字节2字节字节2022-7-298 Program Design in C Lan

7、guagePage9.1.2 结构体类型变量的定义 方式二:方式二:在定义结构体类型的同时定义结构体变量。在定义结构体类型的同时定义结构体变量。定义格式为:定义格式为:struct 结构体名结构体名 类型名类型名1 成员名成员名1;类型名类型名2 成员名成员名2;类型名类型名n 成员名成员名n;结构体变量名表结构体变量名表;2022-7-299 Program Design in C LanguagePage9.1.2 结构体类型变量的定义 例如:例如:struct _Student char id10;char name10;int score3;int sum;stu1,stu2;2022

8、-7-2910 Program Design in C LanguagePage9.1.2 结构体类型变量的定义 方式三:方式三:在定义结构体类型时可以直接定义结构体变量。在定义结构体类型时可以直接定义结构体变量。定义格式为:定义格式为:struct 类型名类型名1 成员名成员名1;类型名类型名2 成员名成员名2;类型名类型名n 成员名成员名n;结构体变量名表结构体变量名表;2022-7-2911 Program Design in C LanguagePage9.1.2 结构体类型变量的定义 例如:例如:struct char id10;char name10;int score3;int

9、sum;stu1,stu2;2022-7-2912 Program Design in C LanguagePage9.1.2 结构体类型变量的定义 关于结构体的说明:关于结构体的说明:类型与变量是不同的概念,应注意区分。类型与变量是不同的概念,应注意区分。系统可以对变量赋值、存取、运算,而类系统可以对变量赋值、存取、运算,而类型则不能。型则不能。编译时,系统只为变量分配存储单元,而编译时,系统只为变量分配存储单元,而类型则不分配。类型则不分配。结构体中的成员也可以是一个结构体变量,结构体中的成员也可以是一个结构体变量,即结构体的嵌套。即结构体的嵌套。结构体中的成员可以和程序中的变量同名,结构

10、体中的成员可以和程序中的变量同名,不同结构体中的成员也可以同名。不同结构体中的成员也可以同名。2022-7-2913 Program Design in C LanguagePage9.1.2 结构体类型变量的定义 例如:例如:struct date int year,month,day;struct _Student2 char id10;char name10;struct date birth;/*birth为结构体成员为结构体成员*/int score3;int sum;stu1,stu2;2022-7-2914 Program Design in C LanguagePage9.1.

11、2 结构体类型变量的定义 关于结构体的说明:关于结构体的说明:可以使用可以使用typedef关键字为结构体类型定义一关键字为结构体类型定义一个别名。个别名。例如:例如:typedef struct _Student char id10;char name10;int score3;int sum;Student;2022-7-2915 Program Design in C LanguagePage9.1.2 结构体类型变量的定义 以后就可以用以后就可以用Student代替结构体类型名来定义结代替结构体类型名来定义结构体变量了。构体变量了。例如:例如:Student stu1,stu2;等价于

12、:等价于:struct _Student stu1,stu2;2022-7-2916 Program Design in C LanguagePage9.1.3 结构体类型变量的初始化和引用 结构体变量的初始化类似于对数组的初始化,由于结构体变量的初始化类似于对数组的初始化,由于结构体变量的成员可以有不同的数据类型,所以各结构体变量的成员可以有不同的数据类型,所以各个初值必须与相应成员保持类型一致或兼容。个初值必须与相应成员保持类型一致或兼容。例例1:struct _Student char id10;char name10;int score3;int sum;stu1=20050001,胡

13、树伟胡树伟,87,71,81;2022-7-2917 Program Design in C LanguagePage9.1.3 结构体类型变量的初始化和引用 例例2:struct date int year,month,day;struct _Student2 char id10;char name10;struct date birth;int score3;int sum;stu2=20050002,李冬李冬,1987,5,3,75,85,76;2022-7-2918 Program Design in C LanguagePage9.1.3 结构体类型变量的初始化和引用 对结构体变量初

14、始化的说明:对结构体变量初始化的说明:对结构体变量进行初始化时,系统是按每个成员在对结构体变量进行初始化时,系统是按每个成员在结构体变量中的顺序一一对应赋初值的。若只对部结构体变量中的顺序一一对应赋初值的。若只对部分成员进行初始化,则只能给前面的若干成员赋值,分成员进行初始化,则只能给前面的若干成员赋值,而不允许跳过前面的成员给后面的成员赋值。而不允许跳过前面的成员给后面的成员赋值。例如:前面两例中结构体变量例如:前面两例中结构体变量stu1和和stu2的成员的成员sum没有获得指定初值,而是获得默认初值没有获得指定初值,而是获得默认初值0。2022-7-2919 Program Design

15、 in C LanguagePage9.1.3 结构体类型变量的初始化和引用 引用结构体变量的一般方式为:引用结构体变量的一般方式为:结构体变量名结构体变量名成员名成员名其中:其中:为结构体成员运算符,为结构体成员运算符,1级运算符级运算符。例如:例如:stu1.sum表示对结构体变量表示对结构体变量stu1中的中的sum成员进行引用。成员进行引用。2022-7-2920 Program Design in C LanguagePage9.1.3 结构体类型变量的初始化和引用 结构体变量的引用规则:结构体变量的引用规则:不能将结构体变量作为一个整体进行输入和输出。不能将结构体变量作为一个整体进

16、行输入和输出。例如:例如:struct _Student3 long num;int age;char sex;st;下面的写法是错误的:下面的写法是错误的:scanf(%ld%d%c,&st);printf(%ld,%d,%c,st);下面的写法是正确的:下面的写法是正确的:scanf(%ld%d%c,&st.num,&st.age,&st.sex);printf(%ld,%d,%c,st.num,st.age,st.sex);2022-7-2921 Program Design in C LanguagePage9.1.3 结构体类型变量的初始化和引用 结构体变量的引用规则:结构体变量的引

17、用规则:内嵌结构体成员的引用,必须逐层使用成员名定位,内嵌结构体成员的引用,必须逐层使用成员名定位,找到最底层的成员。找到最底层的成员。例如:例如:struct date int year,month,day;struct _Student2 char id10,name10;struct date birth;int score3,sum;stu2=20050002,李冬李冬,1987,5,3,75,85,76;printf(birthday=%d,%d,%dn,stu2.birth.year,stu2.birth.month,stu2.birth.day);2022-7-2922 Prog

18、ram Design in C LanguagePage9.1.3 结构体类型变量的初始化和引用 结构体变量的引用规则:结构体变量的引用规则:若结构体的成员是字符数组,可对其进行直接引用。若结构体的成员是字符数组,可对其进行直接引用。例如:例如:struct _Student char id10;char name10;int score3;int sum;stu1;scanf(%s%s,stu1.id,stu1.name);printf(id=%s,name=%s,stu1.id,stu1.name);2022-7-2923 Program Design in C LanguagePage9

19、.1.3 结构体类型变量的初始化和引用 结构体变量的引用规则:结构体变量的引用规则:若结构体的成员是数值型数组,则应逐个引用数组中若结构体的成员是数值型数组,则应逐个引用数组中的元素。的元素。例如:例如:struct _Student char id10;char name10;int score3;int sum;stu1;scanf(%d%d%d,&stu1.score0,&stu1.score1,&stu1.score2);printf(Math=%d,English=%d,Computer=%d,stu1.score0,stu1.score1,stu1.score2);2022-7-2

20、924 Program Design in C LanguagePage9.1.3 结构体类型变量的初始化和引用 例例 结构体变量的输入和输出结构体变量的输入和输出typedef struct _Student char id10,name10;int score3,sum;Student;/*定义结构体类型别名定义结构体类型别名*/void main()Student stu1,stu2;/*定义结构体变量定义结构体变量*/scanf(%s%s%d%d%d,stu1.id,stu1.name,&stu1.score0,&stu1.score1,&stu1.score2);stu1.sum=s

21、tu1.score0+stu1.score1+stu1.score2;stu2=stu1;printf(%s,%s,%d,%d,%d,%d,stu2.id,stu2.name,stu2.score0,stu1.score1,stu1.score2,stu2.sum);2022-7-2925 Program Design in C LanguagePage9.1.4 结构体数组 结构体数组的每个数组元素都是一个结构体变量,结构体数组的每个数组元素都是一个结构体变量,它们都分别包括各个成员项。它们都分别包括各个成员项。结构体数组的定义结构体数组的定义和定义结构体变量的方法相似,只需说明其为数和定义

22、结构体变量的方法相似,只需说明其为数组即可。组即可。例例1:struct _Student char id10,name10;int score3,sum;struct _Student stu50;2022-7-2926 Program Design in C LanguagePage9.1.4 结构体数组 例例2:struct _Student char id10,name10;int score3,sum;stu50;例例3:struct char id10,name10;int score3,sum;stu50;2022-7-2927 Program Design in C Langu

23、agePage9.1.4 结构体数组 结构体数组的初始化结构体数组的初始化结构体数组的初始化与普通数组的初始化相似结构体数组的初始化与普通数组的初始化相似。例如:例如:struct _Student char id10,name10;int score3,sum;struct _Student stu3=20050001,胡树伟胡树伟,87,71,81,20050002,李冬李冬,75,85,76,20050003,梁若婵梁若婵,86,75,90;2022-7-2928 Program Design in C LanguagePage9.1.4 结构体数组 结构体数组的引用结构体数组的引用结构

24、体数组的引用与结构体变量的引用相似结构体数组的引用与结构体变量的引用相似。例例 结构体数组的引用结构体数组的引用 typedef struct _Student char id10;char name10;int score3;int sum;Student;/*定义结构体类型别名定义结构体类型别名*/2022-7-2929 Program Design in C LanguagePage9.1.4 结构体数组 void main()int i,j;Student stu50;/*定义结构体数组定义结构体数组*/for(i=0;i50;i+)scanf(%s%s%d%d%d,stui.id,s

25、tui.name,&stui.score0,&stui.score1,&stui.score2);for(stui.sum=0,j=0;j3;j+)stui.sum+=stui.scorej;for(i=0;i50;i+)printf(%s,%s,%d,%d,%d,%dn,stui.id,stui.name,stui.score0,stui.score1,stui.score2,stui.sum);2022-7-2930 Program Design in C LanguagePage9.1.4*结构体数组名作为函数参数 结构体数组名作为函数参数与普通数组名作为函数结构体数组名作为函数参数与普

26、通数组名作为函数参数相似,传递的也是数组的首地址参数相似,传递的也是数组的首地址。例例 结构体数组名作为函数参数结构体数组名作为函数参数 typedef struct _Student char id10;char name10;int score3;int sum;Student;/*定义结构体类型别名定义结构体类型别名*/void sort(Student stu,int);/*函数原型声明函数原型声明*/2022-7-2931 Program Design in C LanguagePage9.1.4*结构体数组名作为函数参数 void main()int i,j;Student stu

27、50;/*定义结构体数组定义结构体数组*/for(i=0;i50;i+)scanf(%s%s%d%d%d,stui.id,stui.name,&stui.score0,&stui.score1,&stui.score2);for(stui.sum=0,j=0;j3;j+)stui.sum+=stui.scorej;sort(stu,50);for(i=0;i50;i+)printf(%s,%s,%d,%d,%d,%dn,stui.id,stui.name,stui.score0,stui.score1,stui.score2,stui.sum);2022-7-2932 Program Desi

28、gn in C LanguagePage9.1.4*结构体数组名作为函数参数 void sort(Student stu,int count)int i,j;Student t;for(i=1;i=count-1;i+)for(j=1;j=count-i;j+)if(stuj-1.sumstuj.sum)t=stuj-1;stuj-1=stuj;stuj=t;2022-7-2933 Program Design in C LanguagePage上机实验内容:上机实验内容:(1)熟悉结构体类型和结构体变量的定义)熟悉结构体类型和结构体变量的定义和引用和引用(2)熟悉结构体数组的定义和引用)熟悉结构体数组的定义和引用(3)实验教程实验教程第九章第九章 结构体和共用体结构体和共用体 实验实验一(一(1)()(2)

展开阅读全文
相关资源
猜你喜欢
  • •四 巧手小工匠-认识多边形-信息窗二-信息窗二(三角形的内角和)-ppt课件-(含教案+素材)-市级公开课-青岛版(五四)四年级上册数学(编号:4020f).zip •四 巧手小工匠-认识多边形-信息窗二-信息窗二(三角形的内角和)-ppt课件-(含教案+素材)-市级公开课-青岛版(五四)四年级上册数学(编号:4020f).zip
  • •四 巧手小工匠-认识多边形-信息窗二-信息窗二(三角形的三边关系)-ppt课件-(含教案+视频)-部级公开课-青岛版(五四)四年级上册数学(编号:0111e).zip •四 巧手小工匠-认识多边形-信息窗二-信息窗二(三角形的三边关系)-ppt课件-(含教案+视频)-部级公开课-青岛版(五四)四年级上册数学(编号:0111e).zip
  • •五 动物世界-小数的意义和性质-信息窗二(小数的性质)-ppt课件-(含教案+素材)-部级公开课-青岛版(五四)四年级上册数学(编号:30c79).zip •五 动物世界-小数的意义和性质-信息窗二(小数的性质)-ppt课件-(含教案+素材)-部级公开课-青岛版(五四)四年级上册数学(编号:30c79).zip
  • •四 巧手小工匠-认识多边形-信息窗二-信息窗二(三角形的三边关系)-ppt课件-(含教案+素材)-省级公开课-青岛版(五四)四年级上册数学(编号:80aaa).zip •四 巧手小工匠-认识多边形-信息窗二-信息窗二(三角形的三边关系)-ppt课件-(含教案+素材)-省级公开课-青岛版(五四)四年级上册数学(编号:80aaa).zip
  • •四 巧手小工匠-认识多边形-信息窗三(平行四边形和梯形的认识)-ppt课件-(含教案+素材)-部级公开课-青岛版(五四)四年级上册数学(编号:80078).zip •四 巧手小工匠-认识多边形-信息窗三(平行四边形和梯形的认识)-ppt课件-(含教案+素材)-部级公开课-青岛版(五四)四年级上册数学(编号:80078).zip
  • •五 动物世界-小数的意义和性质-信息窗四(小数和复名数)-ppt课件-(含教案+视频+素材)-市级公开课-青岛版(五四)四年级上册数学(编号:f1216).zip •五 动物世界-小数的意义和性质-信息窗四(小数和复名数)-ppt课件-(含教案+视频+素材)-市级公开课-青岛版(五四)四年级上册数学(编号:f1216).zip
  • •四 巧手小工匠-认识多边形-信息窗一(三角形的认识)-ppt课件-(含教案+视频)-部级公开课-青岛版(五四)四年级上册数学(编号:90aac).zip •四 巧手小工匠-认识多边形-信息窗一(三角形的认识)-ppt课件-(含教案+视频)-部级公开课-青岛版(五四)四年级上册数学(编号:90aac).zip
  • •四 巧手小工匠-认识多边形-信息窗一(三角形的认识)-ppt课件-(含教案+视频)-市级公开课-青岛版(五四)四年级上册数学(编号:62e35).zip •四 巧手小工匠-认识多边形-信息窗一(三角形的认识)-ppt课件-(含教案+视频)-市级公开课-青岛版(五四)四年级上册数学(编号:62e35).zip
  • •五 动物世界-小数的意义和性质-信息窗一(小数的意义)-ppt课件-(含教案+素材)-部级公开课-青岛版(五四)四年级上册数学(编号:40804).zip •五 动物世界-小数的意义和性质-信息窗一(小数的意义)-ppt课件-(含教案+素材)-部级公开课-青岛版(五四)四年级上册数学(编号:40804).zip
  • 相关搜索

    当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
    版权提示 | 免责声明

    1,本文(C语言课件-第10讲.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
    2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
    3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


    侵权处理QQ:3464097650--上传资料QQ:3464097650

    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


    163文库-Www.163Wenku.Com |网站地图|