在C程序中使用结构体.ppt

上传人:tia****nde 文档编号:11663769 上传时间:2020-04-30 格式:PPT 页数:29 大小:461.36KB
返回 下载 相关 举报
在C程序中使用结构体.ppt_第1页
第1页 / 共29页
在C程序中使用结构体.ppt_第2页
第2页 / 共29页
在C程序中使用结构体.ppt_第3页
第3页 / 共29页
点击查看更多>>
资源描述
结构体,徐秋红办公地点:主楼四层(信息学院)411室办公电话:01062336516E-mail:shinestar1129,主要内容,什么是结构体如何定义一个结构体如何声明结构体变量如何引用结构体变量:结构体的输入、输出操作、结构体成员操作等结构体数组,什么是结构体,除数组以外的又一个构造类型为什么引入结构体的概念例如:体检表,什么是结构体,例如:学生的成绩单,这些表格中数据的特点是什么?,含义上具有相关性表现的形式上不完全相同,什么是结构体,表格的数据特点:表格中集合了各种类型的数据,无法用前面学过的任何单一种类的数据类型来完全描述因此C语言引入了一种能集中不同的数据类型于一体的构造类型-结构体,什么是结构体,结构体是一个新的构造类型是由编程者根据自己的需求而设计的一种结构形式(或称为由编程者自己设计的数据类型)例如:,通过分析和整理要处理的数据内容,归纳需要哪些数据项,并指出每个数据项的表现形式(即它属于哪种数据类型)。然后准备定义新的数据类型:结构体,定义结构体,定义结构体定义两个内容,structscorecharnum10;charname20;intenglish;intmath;,自定义了一个数据类型,它的名字为score,结构体的内容是由多个数据项组成,每个数据项被称为该结构体的结构体成员,定义结构体,每个结构体必须先定义,后引用定义结构体其实是对结构体内部构成形式进行描述,即对其成员的声明,包括每个成员所具有的数据类型的描述。,定义结构体类型的语句格式:struct结构体类型名结构体的成员列表;,structcoordinatedoublex;doubley;,对每个成员必须分别声明,无论他们是否具有相同的数据类型,通讯录每条记录的描述:,定义结构体类型,structaddrcharname20;chardepart30;/*工作单位*/charaddress30;/*住址*/intpostcode;/*邮编*/charphone9;/*电话号码*/charemail30;/*E-mail*/;,声明结构体变量,1)定义了结构体类型后,再声明结构体类型的变量struct结构体类型名结构体成员表;struct结构体类型名结构体变量名;,先定义结构体类型,再声明结构体类型的变量,声明结构体变量,structsingerints_id;doubles1;/*参赛歌曲得分*/doubles2;/*知识问答得分*/doublesum;/*该选手的总得分*/;,structsingera1,a2,a3,a4,a5,a6;,声明结构体变量,2)在定义结构体类型的同时声明结构体变量。即将结构体类型的定义和声明结构体变量放在同一个语句中.其一般形式如下:struct结构体类型名结构体成员表;结构体变量名表;,structsingerints_id;doubles1;doubles2;doublesum;a1,a2,a3,a4,a5,a6;,声明结构体变量,3)在定义结构体类型时省略结构体类型名,并直接声明结构体变量。一般形式如下:struct结构体成员表;结构体变量名表;即定义的结构体没有结构体类型名。,如果省略结构体类型名,则称之为无名结构体,这种情况常常出现在函数内部。使用这种结构体定义形式时,一定是在定义结构体类型的同时,就声明结构体变量,structsingerints_id;doubles1;doubles2;doublesum;a1,a2,a3,a4,a5,a6;,结构体的长度,结构体类型的长度一旦通过结构体类型定义语句定义了一个结构体类型,则这个结构体类型的长度也就被固定下来,.一个结构体类型长度的计算sizeof(结构体类型名)一个结构体变量长度的计算sizeof(结构体变量名),定义结构体类型,如structsingerints_id;doubles1;doubles2;stud1;则结构体变量stud1的长度是多少?,sizeof(数据类型名)返回“数据类型名”的类型长度。sizeof(变量名)返回“结构体变量”的长度。,定义结构体类型,#includestructsingerints_id;doubles1;doubles2;stud1;intmain(void)printf(nnt长度:%d%d,sizeof(structsinger);printf(nnt长度:%d%d,sizeof(stud1);return0;,s_long.c,结构体变量的初始化,结构体变量初始化的一般形式为:方式1:struct结构体类型名结构体变量名=初始化数据;方式2:struct结构体类型名结构体成员表;结构体变量名=初始化数据;方式3:struct结构体成员表;结构体变量名=初始化数据;,结构体变量的初始化,由于结构体类型变量汇集了各类不同数据类型的成员,所以结构体类型变量的初始化就略显复杂。structach/*定义学生结构体类型*/charname20;/*学生姓名*/charsex;/*性别*/intnum;/*学号*/floatscore3;/*三科考试成绩*/stu1=Frank,M,206110,78.5,91.5,95.0,stu2;,结构体变量的引用,C语言对结构体变量的处理是通过对其成员的引用实现的。,“.”被称为成员(分量)运算符它在所有的运算符中优先级最高。,引用结构体变量的成员的一般方式为:结构体变量名.成员名,一个整体,结构体变量的引用,从键盘给a4赋值,然后输出:scanf(%d,);scanf(%lf%lf,);printf(n%dn,);printf(%f,%fn,);printf(%fn,);,structsingerints_id;doubles1;doubles2;doublesum;a1,a2=113045,80,78,0,a3,a4;,例如:给变量a1赋值a1.s_id=102011;a1.s1=88.5;a1.s2=89;a1.sum=a1.s1+a1.s2;,声明结构体变量,例如:structach/*定义学生结构体类型*/charname20;/*学生姓名*/charsex;/*性别*/intnum;/*学号*/floatscore3;/*三门课程的考试成绩*/;structachstu1=Jonh,M,310,75,96,63,stu2=Lili,F,217,92,87,70;,(stu1.score0+stu1.score1+stu1.score2)/3,inti;floatavg_2,sum=0.0;avg_2=sum/3;,求每一位学生的平均成绩,avg_1=,for(i=0;i3;i+)sum=sum+stu2.scorei;,结构体数组,structach/*定义学生结构体类型*/charname20;/*学生姓名*/charsex;/*性别*/intnum;/*编号*/floatscore3;/*三门课程的考试成绩*/stu0,stu1;,structachcharname20;charsex;intnum;floatscore3;stu2;,stu2=John,M,310,7596,63,Lili,F,217,92,78,70;,printf(n%s,%f,);,stu0.name,stu0.score2,如果要输出第一位学生的名字和其最后一科的成绩?,如何初始化数组?,对结构体做一个说明,结构体类型是人们制造的一种类型,它与其他C的基本类型的特性一样结构体变量是由结构体声明的变量。它与C的其他基本变量的特性一样结构体的成员是由C的其他类型来定义的,为什么结构体的成员不能由其他已经定义的结构体来定义呢?!,结构体定义,再来看一张学生体检表:,FrankM1.7867.5,1.00.9,恐高症,MaryF1.6158.5,0.70.8,青霉素过敏,结构体的嵌套,structsight_tablefloatleft;floatright;structcase_tablecharname20;charsex;floatheight;floatweight;structsight_tablesight;charcomment30;health2;,结构体的嵌套,对嵌套的结构体变量成员的引用:,strcpy(health0.name,Frank);health0.sex=M;health0.sight.left=1.2;health0.sight.right=1.0;printf(%.2f,%.2fn,health0.sight.left,health0.sight.right);,health0:是结构体数组health的第1个元素,Frank,举例,#includestructdateintyear;intmonth;intday;structgoodcharname20;charplace20;intnumber;floatprice;structdatedeadline;,现有库存信息表,包括商品名称、存放地点、库存量、商品单价,入库日期,如book,No.3,57000,202.5,2009,5,19要求用结构体变量保存此信息,并输出。,st_proc.c,intmain(void)structgoodproc;strcpy(proc.name,book);strcpy(proc.place,No.3);proc.price=202.5;proc.number=57000;proc.deadline.year=2009;proc.deadline.month=5;proc.deadline.day=19;printf(%s%s%d%.2f%d年%d月%d日n,proc.name,proc.place,proc.number,proc.price,proc.deadline.year,proc.deadline.month,proc.deadline.day);return0;,st_proc.c,小结,为什么要引用结构体类型,其特点是什么?如何定义结构体类型?如何声明结构体变量?如何声明结构体数组?如何使用结构体变量?结构体成员的表示方法和引用方法。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!