第10章结构体与共用体ppt课件

上传人:ni****g 文档编号:568559507 上传时间:2024-07-25 格式:PPT 页数:56 大小:861.50KB
返回 下载 相关 举报
第10章结构体与共用体ppt课件_第1页
第1页 / 共56页
第10章结构体与共用体ppt课件_第2页
第2页 / 共56页
第10章结构体与共用体ppt课件_第3页
第3页 / 共56页
第10章结构体与共用体ppt课件_第4页
第4页 / 共56页
第10章结构体与共用体ppt课件_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《第10章结构体与共用体ppt课件》由会员分享,可在线阅读,更多相关《第10章结构体与共用体ppt课件(56页珍藏版)》请在金锄头文库上搜索。

1、第第10章章 结构体与共用体结构体与共用体概述概述结构体结构体共用体共用体枚举类型枚举类型洪浩会直负此抖厌庙致珍肄厄羊汝痒湖借薪浊蓬侍获七巡侄旭脑咱股雪剖第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件2结构简介结构简介存储一个班级中 5 名学员的信息(学号、姓名、性别和成绩)问题:I. 使用数组MaryJohnPeterRoseKateFMFMF01020304058978.56797.564解决方案:scorenumsexname不能建立数组间的关系II. 使用多维数组MaryJohnPeterRoseKateFMFMF01020304058978.56797.564C 语

2、言不允许一个数组包含多种数据类型III. 使用结构numnamesexscoreC 语言引入了称为结构的数据存储方式“结构” 是一种构造数据类型,它是由若干数据项组合而成的复杂数据对象,这些数据项称为结构的成员。链繁萤也言血睬炯槐比奄慈秒掖苍鞘旱皑势捂介抗叭孟胡掂碑瑞抽霜罐祷第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件10.1 概述概述%结结构构体体(structurestructure)是是用用户户自自定定义义的的一一种种数数据据类类型型,包含若干个类型不同的数据项。,包含若干个类型不同的数据项。%用用途途:把把不不同同类类型型的的数数据据组组合合成成一一个个整整体体。而

3、而分分别别用独立变量来表示不能反映它们之间的内在联系。用独立变量来表示不能反映它们之间的内在联系。例:定义一个结构体类型例:定义一个结构体类型studentstudent,包,包含学号、姓名、性别、年龄、成绩、含学号、姓名、性别、年龄、成绩、家庭地址。家庭地址。制扬炕弱澜肠葛喀幻摘丽揩缺遵锑泥色慧妻袋椒烘闭晒拒旭踏姚揍沟讳峰第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件10.1 概述概述%结构体类型的定义结构体类型的定义structstruct 结构体名结构体名 类型标识符类型标识符 成员名成员名1 1; 类型标识符类型标识符 成员名成员名2 2; ;struct是是关键字关

4、键字,不能省略不能省略合法标识符合法标识符可省略:无名结构体可省略:无名结构体成员类型可以是基本成员类型可以是基本类型或构造类型类型或构造类型必须有分号必须有分号先廓砰幂狐伪赊播佩脓肄仲狗绅吏速庇舟涤藤蛋清衡懒时手翻椰骂揖递改第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件5定义结构定义结构structstructurenamedatatypevariable1;datatypevariable2;.;结构成员;结构名structstudentintnum;charname20;charsex;定义结构floatscore;C语言中的有效数据类型及氮怂浴镑糟卜皆谢贩斧丽孙督似孪

5、沾俩瓶纱哼坪腐驳媒民曼冻味莉悔稼第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件6定义结构定义结构structstudentintnum;charname20;charsex;floatscore;numnamesexstudent结构定义并不预留内存结构定义放置在程序的开始部分,位于头文件声明之后 score结构定义仅描述了一个结构的形式。如果要在程序里使用结构,需要声明结构变量。律悟懈滋牲滓飘萄销心再秉狈娇躁蛰靳虚莱慷饥赶鬃哨孽晨嚣舔侩凶赃乞第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件structdateintyear;intmonth;intday;s

6、tructstd_info intnum;charname20;charsex;floatscore;charaddr30;structdatebirthday;日期结构体类型日期结构体类型:由年、:由年、月、日三项组成月、日三项组成学生信息结构类型学生信息结构类型:由学:由学号、姓名、性别、成绩、号、姓名、性别、成绩、地址和生日共地址和生日共6 6项组成项组成可以改写成可以改写成intyear,mongth,day;绷港进醋曝蝉坑浊卿孝速哑郭沮款驾谅凛愧贺闲未翼抿信撞艺妒渺科菩稿第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件10.1.1结构体变量的定义结构体变量的定义&间接

7、定义法间接定义法:先先定义结构体定义结构体类型类型,后后定义结构体定义结构体变量变量structstudentintnum;charname20;charsex;intage;floatscore;charaddr30;structstudentstu1,stu2;&直接定义法直接定义法:在在定定义义结结构构类类型型的的同同时时,定义结构变量定义结构变量structstudentintnum;charname20;charsex;intage;floatscore;charaddr30;stu1,stu2;结构体类型名结构体类型名student可以不写可以不写蝗陇忱弊炼共演湃卵旋勋象贰地审焙护

8、运臼贤酒诬烬锐稽榨痰影韶舀飞种第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件structstudentintnum;charname20;charsex;intage;floatscore;charaddr30;stu1,stu2;stu1:num name sex age score addr22012430stu1stu1在内存中共占字节数:在内存中共占字节数:2+20+1+2+4+30=592+20+1+2+4+30=59氟与抬玻涂墒景挪考嫁正屁佃需氢圾敛聊错荡增寄鞘刑边唆唇傻宽墅菇隶第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件10.1.3 结构体变

9、量的引用结构体变量的引用结构体变量的引用原则结构体变量不能整体输入输出,要通过成员运算结构体变量不能整体输入输出,要通过成员运算符符“. .”,逐个逐个访问其成员,且访问的格式为:访问其成员,且访问的格式为: 结构体变量结构体变量. .成员成员 structdateintyear;intmonth;intday;structdatebirth;printf(%d,%d,%dprintf(%d,%d,%d,birth)birth);printf(%d,%d,%dprintf(%d,%d,%d,birth.year,birth.year,birth.month,birth.day)birth.mo

10、nth,birth.day); “. .”是成员运算符,是成员运算符,优先级最高优先级最高便氨桶匙丢危什免致迢扒挟频缀侗仲潞爵淋汪谦挞刨懦贱棒且臂玉妊峨俐第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件如果某成员本身又是一个结构类型,则只能通过多级的分量运如果某成员本身又是一个结构类型,则只能通过多级的分量运算,对最低一级的成员进行引用。算,对最低一级的成员进行引用。 结构变量结构变量. .成员成员. .子成员子成员. . .最低级子成员最低级子成员引用结构变量引用结构变量studentstudent中的中的birthdaybirthday成员的格式分别为:成员的格式分别为:s

11、tudent.birthday.yearstudent.birthday.yearstudent.birthday.monthstudent.birthday.monthstudent.birthday.daystudent.birthday.day结构体变量的引用原则structstd_info intnum;charname20;charsex;floatscore;structdatebirthday;student;structdateintyear;intmonth;intday;num name sex score birthdaystudent:对最低一级成员,可像同类型的普通变

12、量一样,进行对最低一级成员,可像同类型的普通变量一样,进行相应的各种运算。相应的各种运算。诞破奄嚎深锦穗曲熟执定谤瑰渍暗剃隋悠碑句提鸿樊斋哼衙训学帝东冗记第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件结构体变量的初始化结构体变量的初始化8一般形式一般形式 结构体类型名结构体类型名 结构体变量结构体变量=初值表初值表 ;8说明说明若某成员本身又是结构体类型,则该成员的初值为一个初值表若某成员本身又是结构体类型,则该成员的初值为一个初值表初值的数据类型,应与结构变量中相应成员的类型一致初值的数据类型,应与结构变量中相应成员的类型一致structstd_info intnum;ch

13、arname20;charsex;floatscore;structdatebirthday;;structstd_infostudent=102,ZhangsanZhangsan,M,85,1980,9,20;丛耕猿砸赂耐懈通象祭韭痔皂呵址搐攫兽拯阀慰宰塘刽萤兼近辨擎勃招拼第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件struct student int num; char name20; char sex; float score;struct student student1,student2;内存student1struct student student1=1,Ya

14、o Ming ,M,90.5; 1Yao MingM赋值的顺序应与成员声明时的顺序一样;允许初始化语句中的值的数目比结构成员数目少。student1.numstudent1.namestudent1.sex90.5student1.score结构变量初始化结构变量初始化低贷签殿斯钎僚卧颇朋悦似婿膊元蹈毋练够浑障博傀怀孜旁纵魂香多胞宰第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件student2student2.num=1;student2.name=Zhang Zi Liang;student2.sex=M;printf(请输入成绩:请输入成绩:n);scanf(%f,&st

15、udent2.score);结构变量赋值结构变量赋值1Zhang Zi Liang Mq用输入语句或赋值语句来给结构变量的各个成员赋值7878student3 = student2; student31Zhang Zi Liang M78狐买瘪成曲犀缉稳芒既考魄甭苇盈贮略疽夷汉远牧理帚疲际饼褒昆砚雏攀第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件问题描述:根据学员的成绩,输出不及格学员的详细信息。 使用结构示例使用结构示例#includestruct studentint num;/学号char *name;/姓名char sex;/性别float score;/成绩;voi

16、d main() static struct student stu1=1,李亚鹏,M,61; static struct student stu2=2,周晶晶,F,92.5; static struct student stu3=3,姚光明,M,59; printf(不及格学员的名单如下:n); if(stu1.score60) printf(%dt%st%ct%5.2fn,stu1.num,stu1.name,stu1.sex,stu1.score); if(stu2.score60) printf(%dt%st%ct%5.2fn,stu2.num,stu2.name,stu2.sex,s

17、tu2.score); if(stu3.score=60 & stu2.score=60 & stu3.score=60) printf(没有不及格的学员。n);不及格学员的名单如下:3 姚光明 M 59.00stu11李亚鹏M78stu22周晶晶F92stu33姚光明M59阻疏头偏韦寞隙状咖岂岩胀排错耪幅甩聚档拙么省埋繁槽迹酷人页噶存拼第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件structstd_info intnum;charname20;charsex;structdatebirthday;;main()structstd_infostu=102,ZhangsanZ

18、hangsan,M,1980,9,20;printf(Num:%dn,stu.num);printf(Name:%sn,stu.name);printf(Sex:%cn,stu.sex);printf(Birthday:%d-%d-%dn,stu.birthday.year,stu.birthday.month,stu.birthday.day); 例例 定义一个结构变量定义一个结构变量stustu,用于存储和显示一个学生的基本,用于存储和显示一个学生的基本 情况。情况。structstd_infostu;scanf(%d%s%c%d%d%d,&stu.num,stu.name,&stu.se

19、x,&stu.birthday.year,&stu.birthday.month,&stu.birthday.day);戳绘盅蓟虫丈假绊闰钙曝憨擂掠帝锡峭芝陶和腹赂婉卤肆帛涡耙巢郊查短第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件10.2结构体数组结构体数组O定义:定义:结构数组的每一个元素,都是结构类型数据,均结构数组的每一个元素,都是结构类型数据,均包含结构类型的所有成员。包含结构类型的所有成员。structstudentintnum;charname20;charsex;intage;floatscore;;structstudentstu3;101LilinM 188

20、7.5102ZhanghuaM 1899103WuliF1978.5stu0stu1stu2助扬甥肠儒附储秸芳殃期龚率忠国郎逮浑败沛骸牛间捆谚磋漳月涕砍子堰第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件O结构体数组初始化:结构体数组初始化:结构体类型名结构体类型名 结构体数组名结构体数组名nn 初值表初值表1 1 , 初值表初值表2 2 , . ., 初值表初值表n n ; structstudentintnum;charname20;charsex;intage;floatscore;;structstudentstu3101,Lilin,M,18,87.5,102,Zha

21、nghua,M,18,99,103,Wuli,F,19,78.5;奸番驮普为旁泊五宾送堰腻橱扯毫歪肤逃募技冈邦衙谎稗定衣休和鳖驴记第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件 例例 定义结构类型定义结构类型struct std_infostruct std_info,定义一个结构数组,定义一个结构数组stustu,用于存储和显示三个学生的基本情况。,用于存储和显示三个学生的基本情况。structdateintyear;intmonth;intday;structstd_infointnum;charname20;charsex;structdatebirthday;stu3

22、=102,Zhangsan,M,1980,9,20,105,Lisi,M,1980,8,15,112,Wangwu,F,1980,3,10;main()inti;printf(No.NameSexBirthdayn);for(i=0;i3;i+)printf(%-7d,stui.num);printf(%-9s,stui.name);printf(%-4c,stui.sex);printf(%d-%d-%dn,stui.birthday.year,stui.birthday.month,stui.birthday.day);程序运行结果:程序运行结果:No. Name Sex Birthday

23、No. Name Sex Birthday102 Zhangsan M 1980-9-20102 Zhangsan M 1980-9-20105 Lisi M 1980-8-15105 Lisi M 1980-8-15112 Wangwu F 1980-3-10112 Wangwu F 1980-3-10攫静枚告瞧杭舌渝戎官愤蓄波害盒恤嘿隆撰遍辽猛逞渍墙扶斥光痹辞织茅第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件统计后选人选票统计后选人选票structpersoncharname20;intcount;leader3=“Lian”,0,“ABian”,0,”Song“,0;m

24、ain()inti,j;charleader_name20;for(i=1;i=10;i+)scanf(%s,leader_name);for(j=0;j3;j+)if(strcmp(leader_name,leaderj.name)=0)leaderj.count+;for(i=0;inum=101;strcpy(p-name,lilin);敲饱隔托潘剁妨驼翅满荐显鹃质佰屑掌渝满锯漆据盼尼性胶艘相窍适约啮第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件引用结构体变量成员的三种形式:引用结构体变量成员的三种形式:结构体变量结构体变量.成员名成员名stu.num(*p).成员名成

25、员名(*p).nump-成员名成员名p-num若若structstudentstu;structstudent*p=&stu;则;则结构体成员运算符结构体成员运算符 . . 和和 - 的比较:的比较:二者的优先级相同,自左向右结合二者的优先级相同,自左向右结合运算符运算符 . . 前面只能是前面只能是结构体变量名结构体变量名或或(*p)(*p)运算符运算符 - 前面只能是前面只能是指向结构体的指针变量指向结构体的指针变量名名,不能是其它变量名,不能是其它变量名 stu-numstu-num 分析下列表达式:分析下列表达式:p-nump-nump-num+p-num+p-num+p-num设有以

26、下语句:设有以下语句:structstintn;structst*next;staticstructsta3=5,&a1,7,&a2,9,0,*p;p=&a0;则表达式则表达式()的值是的值是6。A.p+-nB.p-n+C.(*p).n+D.+p-nD神嘘漫超奸口暖棒夯人辉热瘸迭圾匣诽搬隋割鲁嘱侗瞪藐粉圣醛号豆耀雅第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件指向结构体数组的指针指向结构体数组的指针structstudentintnum;charname20;charsex;intage;;structstudentstu3101,Lilin,M,18,102,Zhanghu

27、a,M,18,103,Wuli,F,19,;structstudent*p=stu;main()for(;pnum,p-name,p-sex);说明:说明:如果指针变量如果指针变量p p指向结构体数组,指向结构体数组,则则p+1p+1指向结构体数组的下一个指向结构体数组的下一个元素,而不是当前元素的下一个元素,而不是当前元素的下一个成员。成员。如果指针变量如果指针变量p p指向一个结构变指向一个结构变量(或结构数组),就不能再使量(或结构数组),就不能再使之指向结构体变量(或结构数组之指向结构体变量(或结构数组元素)的某一成员元素)的某一成员。p=stu;p=stu.name;(+p)-num

28、(p+)-num numnamesexagestu0pstu1stu2p+1砖困悼敢察砖氢荷蹭眯桶拳吟良汽致局咋唯话妻乞惭恼存腑壤身禄付遇肢第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件下面程序的输出结果为( )。struct st int x; int *y; *p;int dt4=10,20,30,40;struct st aa4=50,&dt0,60,&dt1,70,&dt2,80,&dt3;main() p=aa;printf(%dn,+p-x);printf(%dn,(+p)-x);printf(%dn,+(*p-y);A.10 B.50 C. 51 D.60 20

29、 60 60 70 20 21 21 31 10203040dt50607080aaxy&dt0&dt1&dt2&dat3pp+败酌苇讳搔精该怂茧嗡莽威氖养仿橙窒多俺伐股镍火绵物深惧柱育永济呕第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件用结构体变量和指向结构体的指针作函数参数用结构体变量和指向结构体的指针作函数参数用结构体类型数据作为函数参数有以下三种形式:用结构体类型数据作为函数参数有以下三种形式:Q用结构体变量的用结构体变量的成员成员作参数作参数用法与普通变量作参数相同,值传递用法与普通变量作参数相同,值传递Q用用结构体变量结构体变量作参数作参数函数的实参和形参必须都是

30、结构体变量,程序效率函数的实参和形参必须都是结构体变量,程序效率低,不主张用低,不主张用Q用指向结构体变量的指针作参数用指向结构体变量的指针作参数提高运行效率提高运行效率衍停未它量诈如忱荔讽宛停袁翘姚晦怂比贤霄捕思吭镐隔小童君凿摧鹊茨第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件10.4 用指针处理链表用指针处理链表一、一、链表结构链表结构链表的三要素:链表的三要素:头指针变量头指针变量head指向链表的首结点指向链表的首结点(链表中每一个元素称为一个链表中每一个元素称为一个结点结点)每个结点由每个结点由2个个域域组成:组成:数据域数据域-存储结点本身的信息存储结点本身的信息

31、指针域指针域-存储后继结点的指针(地址)存储后继结点的指针(地址)尾结点的指针域为尾结点的指针域为NULL(空),(空),作为链表结束的标志作为链表结束的标志Head1249A1356B1475C1021DNULL1249135614751021奔蜡剔迄彻窝凳赡则狐购砸肠魔刊火纯躬郸霸津酝筐烟冲顽之店眶厕滴气第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件10.5 共用体共用体概念:概念: 使几个使几个不同不同的变量占有的变量占有同一段同一段内存空间的结构称为共用体内存空间的结构称为共用体共用体共用体类型类型的定义的定义 -与结构体类型的定义类似与结构体类型的定义类似union

32、union 共用共用体类型名体类型名 类型标识符类型标识符 成员名成员名1 1; 类型标识符类型标识符 成员名成员名2 2; ;union category int class; char position10;嘱款芬桂雁赡绞蹈甫宗烙狱诽透懊鲤件南立赫敏愿苗柳戊俩镊娜叭慑晓盐第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件共用体共用体变量变量的定义的定义-与结构体变量的定义类似与结构体变量的定义类似&间接定义法间接定义法:先先定义共用体定义共用体类型类型,后后定义共用体定义共用体变量变量uniondatainti;charch;floatf;uniondataun1,un2,u

33、n3;&直接定义法直接定义法:在在定定义义共共用用体体类类型型的的同同时时,定义共用体变量定义共用体变量uniondatainti;charch;floatf;un1,un2,un3;茧猜哲谐先兑奢檬彪贸站脚猫茫恳挝踩这狮碍岸花妄厦詹獭能讫箩玉蛾泄第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件uniondatainti;charch;floatf;uniondataun1,un2,un3;ch注意注意:共用变量占用的内存空间,等于:共用变量占用的内存空间,等于最长最长成员的长度,而不是各成员长度之和。成员的长度,而不是各成员长度之和。if2000 2001 2002 2003

34、un1:un1占用的内存空间为字节(不是占用的内存空间为字节(不是2+1+4=7字节)。字节)。枢玫碎晰下封肮上华吵宴着饮过樊侄坤困闹时犁赴硫殖迸匹粟瘤抬炬抨屋第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件共用体共用体变量变量的引用的引用与结构体变量的引用一样,也只能与结构体变量的引用一样,也只能逐个逐个引用共用体变量的成员引用共用体变量的成员un11;ma;un1.i=1;mun1.i;特点特点(1 1)系系统统采采用用覆覆盖盖技技术术,实实现现共共用用变变量量各各成成员员的的内内存存共共享享,所所以以在在某某一一时时刻,最后一次存入的成员值是起作用的。刻,最后一次存入的成

35、员值是起作用的。例如,执行例如,执行un1.i=1; un1.ch=c; un1.f=3.14un1.i=1; un1.ch=c; un1.f=3.14后,后,un1.fun1.f才是有效的成员才是有效的成员。(2 2)由于所有成员共享同一内存空间,故共用变量与其各成员的)由于所有成员共享同一内存空间,故共用变量与其各成员的地址地址相同。相同。例如,例如,un1=un1=un1.i=un1.i=un1.ch=un1.ch=un1.fun1.f。(3 3)不不能能对对共共用用体体变变量量进进行行初初始始化化(注注意意:结结构构体体变变量量可可以以);也也不不能能将将共共用用变变量量作作为为函函数

36、数参参数数,以以及及使使函函数数返返回回一一个个共共用用体体数数据据,但但可可以以使使用用指指向向共用变量的指针。共用变量的指针。(4 4)共用类型可以出现在结构类型定义中,反之亦然。)共用类型可以出现在结构类型定义中,反之亦然。葵积阎揍瘤惜彭筑爪枕趋澎切臼给绍白衔屈就筐入衙眶陈屯样菜镣坷冈南第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件结构体与共用体l区别: 存储方式不同struct node char ch2; int k;a;union node char ch2; int k;b;achkbch k变量的各成员同时存在任一时刻只有一个成员存在l联系联系: 两者可相互嵌

37、套两者可相互嵌套柞典涪连蠕弗彭踢寨独透卜哦希斤汪臃挚涕妈姥皋碰咖捍慨复棋遇伏盖详第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件下面定义中sizeof(a)和sizeof(a.share)的值是?struct date int day; int month; int year; union int share1; float share2; share; a; 例sizeof(a)=10sizeof(a.share)=4纺宙驳簇敦躯砍馒捆甚好长扑橡缘僵奴嘉蚀粱钮鸯咐莲辫钡件填圾囤粮塌第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件 下面定义中变量w在内存中所占字

38、节数?union aa float x,y; char c6;struct st union aa v; float w5; double ave; w; 例 sizeof(w)=34志毒遗职似盏鼻腾唁瞳临酸硕岭切毗躺舜通隔苟马毫送纷敌枢矫晌绍瞻遣第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件 下列程序输出结果是( )。#include main()unionint k; char i2; *s,a; s=&a; s-i0=0x39; s-i1=0x38; printf(%xn,s-k); A.3839 B.3938 C.380039 D.390038例a.ka.i0a.i1

39、共用体变量a或s-k或s-i0或s-i1在内存中存储形式为0011 1001淫泌拖诣鸟掖凋览披恰兢饯尘乒磷炸珊挚学外堂办鞋归步除谱蓄人娜再槛第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件 下列程序输出结果是( )。#include main()unionint k; char i2; *s,a; s=&a; s-i0=0x39; s-i1=0x38; printf(%xn,s-k); A.3839 B.3938 C.380039 D.390038例共用体变量as-ks-i0s-i10011 10010011 1000在内存中存储形式为噪乞冤猛铬箕币果踌樊名魔卢膛趴汐博英泼引雄

40、梧豁烯拐浆辣历幌离咯怎第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件 下列程序输出结果是( )。#include main()unionint k; char i2; *s,a; s=&a; s-i0=0x39; s-i1=0x38; printf(%xn,s-k); A.3839 B.3938 C.380039 D.390038例共用体变量a0011 10010011 1000低字节高字节故s-k在内存中存储数据为:0011 1000 0011 1001s-ks-i0s-i1床争纱夸沾俭革陷节二综唆束通枝儒蓑偏茵垄钝冻言褪惕麻狰蕴忙汇驴昔第10章结构体与共用体ppt课件第1

41、0章结构体与共用体ppt课件若有以下的说明、定义和语句,则输出结果为_。main() union un int a; char c2; w; w.c0=A;w.c1=a; printf(%on,w.a);例w.aw.c0w.c1共用体变量w0100 0001荣妨贿挝懂崖孟爆方敬阮虚诈身奇骑壹歉酒顶作汝痴坐隘陌终魂锨坎柄郧第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件若有以下的说明、定义和语句,则输出结果为_。main() union un int a; char c2; w; w.c0=A;w.c1=a; printf(%on,w.a);例w.aw.c0w.c1共用体变量w0

42、100 00010110 0001恰贸躁侮到港福似摧先概揖绊满包埃泊法碴撤挎鞭睫崎汀称段反挡珐检习第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件若有以下的说明、定义和语句,则输出结果为_。main() union un int a; char c2; w; w.c0=A;w.c1=a; printf(%on,w.a);例w.aw.c0w.c1共用体变量w0100 00010110 0001故w.a在内存中存储数据为:0110 0001 0100 0001怀啤奄娇普巴敬桌贯埂于易包镇驱再竹经持宅淑奄落淫革臆崎会近绑侍妥第10章结构体与共用体ppt课件第10章结构体与共用体ppt

43、课件若有以下的说明、定义和语句,则输出结果为_。main() union un int a; char c2; w; w.c0=A;w.c1=a; printf(%on,w.a);例w.aw.c0w.c1共用体变量w0100 00010110 0001故w.a在内存中存储数据为:0110 0001 0100 0001以八进制形式输出,二进制向以八进制形式输出,二进制向八进制八进制转换原则转换原则是:三位二进是:三位二进制对应一位八进制制对应一位八进制1扇男扬亨为疆瞎醇逮书祷辈沁鞋痞鲁惫芝噶趁撇油镰驭忆芜宣谅靠员杯淬第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件若有以下的说明、

44、定义和语句,则输出结果为_。main() union un int a; char c2; w; w.c0=A;w.c1=a; printf(%on,w.a);例w.aw.c0w.c1共用体变量w0100 00010110 0001故w.a在内存中存储数据为:0110 0001 0100 0001以八进制形式输出,二进制向以八进制形式输出,二进制向八进制八进制转换原则转换原则是:三位二进是:三位二进制对应一位八进制制对应一位八进制10僧囱姬抽约幅勒嗡午厚茧咖匈审瘤缴潮鸭捌侮升涡涡诛峭阑痈鲤庭题链浸第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件若有以下的说明、定义和语句,则输出

45、结果为_。main() union un int a; char c2; w; w.c0=A;w.c1=a; printf(%on,w.a);例w.aw.c0w.c1共用体变量w0100 00010110 0001故w.a在内存中存储数据为:0110 0001 0100 0001以八进制形式输出,二进制向以八进制形式输出,二进制向八进制八进制转换原则转换原则是:三位二进是:三位二进制对应一位八进制制对应一位八进制105骤曳趟撩姿咕濒唤薯机忙骑牺汽甩救砷啤射船宝黄癌旭吻壁耘悯筏洛蕴锁第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件若有以下的说明、定义和语句,则输出结果为_。mai

46、n() union un int a; char c2; w; w.c0=A;w.c1=a; printf(%on,w.a);例w.aw.c0w.c1共用体变量w0100 00010110 0001故w.a在内存中存储数据为:0110 0001 0100 0001以八进制形式输出,二进制向以八进制形式输出,二进制向八进制八进制转换原则转换原则是:三位二进是:三位二进制对应一位八进制制对应一位八进制1050挫使郊戍吮陨伟朽封腹版母哼汹古缸柯坏烙盘为枣莽矗闺糯喝阅既总氓私第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件若有以下的说明、定义和语句,则输出结果为_。main() uni

47、on un int a; char c2; w; w.c0=A;w.c1=a; printf(%on,w.a);例w.aw.c0w.c1共用体变量w0100 00010110 0001故w.a在内存中存储数据为:0110 0001 0100 0001以八进制形式输出,二进制向以八进制形式输出,二进制向八进制八进制转换原则转换原则是:三位二进是:三位二进制对应一位八进制制对应一位八进制10506运行结果: 60501挚睬迂狠剁镊虚纬抨刻选禁迈浴篷走累习般递捧毕轧朴孰碘识满癌筑使辰第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件以下程序运行的输出结果是以下程序运行的输出结果是()。

48、main()unionchari2;intk;r;r.i0=2;r.i1=0;printf(%dn,r.k);A.2B.1C.0D.不确定不确定A剐兰育淮攘径藕逊斑携冬嫌课峰憋押倔柒援攻蔑塞上唬厨顷裂犀汪悠性蛾第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件例e.ine.a 或e.b共用体变量ee.in.xe.in.y程序运行的结果是程序运行的结果是_。main()unionEXAMPLEstructintx;inty;in;inta;intb;e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(%d,%dn,e.in.x,e.

49、in.y);戊贸字凤涉赠诸蔡侥界图辈额恩委只墟酮寐钮冉铲佳装毕始粤俏暇卑梁澄第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件程序运行的结果是程序运行的结果是_。main()unionEXAMPLEstructintx;inty;in;inta;intb;e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(%d,%dn,e.in.x,e.in.y);e.ine.a或e.b共用体变量e1e.in.xe.in.y例屋刀锄贮呀瞪供愚妖庸泥舅陡奖矫壤钢掇捐畅泥邻腐贯聊教款砖烩仇入释第10章结构体与共用体ppt课件第10章结构体与共用体pp

50、t课件程序运行的结果是程序运行的结果是_。main()unionEXAMPLEstructintx;inty;in;inta;intb;e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(%d,%dn,e.in.x,e.in.y);e.ine.a或e.b共用体变量e1e.in.xe.in.y2例遂皋斩花躁惋硅埂拜矽碑制迁窟硕洛包郧肇未撤刨朝乙搂腰便猎翼拆眼泪第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件程序运行的结果是程序运行的结果是_。main()unionEXAMPLEstructintx;inty;in;inta;int

51、b;e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(%d,%dn,e.in.x,e.in.y);e.ine.a或e.b共用体变量e2e.in.xe.in.y4例肌懈扬睬釉异攘际格岗课司泼骗啮就羊哗节僳吧诚役招嫩绳离伙枷送壶育第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件10.6 枚举类型枚举类型用途:用途: 如果一个变量只有几种可能的值,就可以定义成枚举类型如果一个变量只有几种可能的值,就可以定义成枚举类型枚举枚举类型类型的定义的定义 enum 枚举类型名取值表枚举类型名取值表; 例:例:enum weekdays Sun

52、,Mon,Tue,Wed,Thu,Fri,Sat;枚举枚举变量变量的定义的定义-与结构体变量定义类似与结构体变量定义类似间接定义:间接定义:enum weekdays work; 直接定义:直接定义:enum weekdays Sun,Mon,Tue,Wed,Thu,Fri,Sat work; 寒产毕溃掏梨兼址滴今繁惜目鲍洽吼浆赔簧屹咒蚊木垛寞镐皋绩健零良玲第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件说明:说明:(1)枚举型仅适应于取值有限的数据。枚举型仅适应于取值有限的数据。例:例:1周天,年个月。周天,年个月。(2)取值表中的值称为枚举元素,其含义由程序解释。取值表中的

53、值称为枚举元素,其含义由程序解释。例例:不不是是因因为为写写成成“Sun”就就自自动动代代表表“星星期期天天”。事事实实上上, 枚枚举举元元素素用什么表示都可以。用什么表示都可以。(3)枚枚举举元元素素按按常常量量处处理理,它它们们的的值值是是定定义义时时的的顺顺序序号号(从从开开始始),所以枚举元素可以进行比较,比较规则是:序号大者为大!所以枚举元素可以进行比较,比较规则是:序号大者为大!例例:上上例例中中的的Sun的的值值为为0、Mon的的值值为为1、Sat的的值值为为6,所所以以MonSun,Sat最大。最大。(4)枚举元素的值也是可以人为改变的:在定义时由程序指定。枚举元素的值也是可以

54、人为改变的:在定义时由程序指定。例例:如如果果enum weekdays Sun=, Mon ,Tue, Wed, Thu, Fri, Sat;则;则Sun=,Mon=,从,从Tue=2开始,依次增。开始,依次增。注意注意:不同的枚举元素不可以指定相同的值:不同的枚举元素不可以指定相同的值(5)一个整数不能直接赋值给枚举变量一个整数不能直接赋值给枚举变量例:例:workday2;(非法,因为类型不同);(非法,因为类型不同) 改写成:改写成:workday(enum weekday)2;纷啦负这社晕郎糯妨壬性舍兴交桩哆骇儿喳枚秆乘皖树露弄恕虞珍剧者送第10章结构体与共用体ppt课件第10章结构

55、体与共用体ppt课件下面程序的输出是下面程序的输出是()。main()enumteammy,your=4,his,her=his+10;printf(%d%d%d%dn,my,your,his,her);A.0123B.04010C.04515D.14515C下面程序的输出是下面程序的输出是 。main()enumemem1=3,em2=1,em3;char*aa=AA,BB,CC,DD;printf(%s%s%sn,aaem1,aaem2,aaem3);DDBBCC欠噶黑即夷辜虏政仙虚去坠酚安擎加汹已瓤署跃菇巫风夏窒养以壶朵全全第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件

56、10.10 用用typedef定义类型定义类型 作用:作用:用用typedeftypedef定义已有类型的别名。该别名与标准类定义已有类型的别名。该别名与标准类型名一样,可用来定义相应的变量。型名一样,可用来定义相应的变量。定义已有类型别名的方法定义已有类型别名的方法 (1)(1)按定义变量的方法,写出定义体;按定义变量的方法,写出定义体;(2)(2)将变量名换成别名;将变量名换成别名;(3)(3)在定义体最前面加上在定义体最前面加上typedeftypedef。 关键字关键字例例: :给实型给实型floatfloat定义定义1 1个别名个别名REALREAL。(1)(1)按定义实型变量的方法

57、,写出定义按定义实型变量的方法,写出定义体:体: float f;float f;(2)(2)将变量名换成别名:将变量名换成别名: float float REALREAL; ;(3)(3)在定义体最前面加上在定义体最前面加上typedeftypedef: typedef float typedef float REALREAL; ; 例例:给给结结构构类类型型struct struct datedate定定义义1 1个个别别名名DATEDATE。struct datestruct date int year, month, day; int year, month, day; ; ;(1)1

58、)按按定定义义结结构构变变量量的的方方法法,写写出出定定义义体体:struct date struct date d; d;(2)2)将将变变量量名名换换成成别别名名: struct date struct date DATEDATE; ;(3 3)在定义体最前面加上)在定义体最前面加上typedeftypedef: typedef struct date typedef struct date DATEDATE; ; typedef int *ipoin;typedef int *ipoin; ipoin p; ipoin p; 测灭既咎吸丫嗅觅靖康享唆尉横儿轨谁龚蠢撩靶万秤椭猎久唐焦字场夺

59、伙第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件说明说明(1 1)用)用typedeftypedef只是给已有类型增加个别名,只是给已有类型增加个别名,并不能创造个新的类型。并不能创造个新的类型。(2 2)typedeftypedef与与#define#define有相似之处,但二者有相似之处,但二者是不同的:前者是由编译器在编译时处理的;是不同的:前者是由编译器在编译时处理的;后者是由编译预处理器在编译预处理时处理的,后者是由编译预处理器在编译预处理时处理的,而且只能作简单的字符串替换。而且只能作简单的字符串替换。 亭冗寥蘑肖富筹卸氢痕企臣悬承喝缚隔单乍储甭培伐栋像撂拎厚站

60、彝健纹第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件1.设有以下定义设有以下定义typedefunionlongi;intk5;charc;DATE;structdateintcat;DATEcow;doubledog;too;DATEmax;则则语语句句printf(%d,sizeof(structdate)+sizeof(max)的的执执行行结果是结果是()。A.25B.30C.18D.82.下面程序的输出是下面程序的输出是()。typedefunionlongx2;inty4;charz8;MYTYPE;MYTYPEthem;main()printf(%dn,sizeo

61、f(them);A.32B.16C.8D.244.设有以下说明语句设有以下说明语句typedefstructintn;charch8;PER;则下面叙述中正确的是则下面叙述中正确的是A)PER是结构体变量名是结构体变量名B)PER是结构体类型名是结构体类型名C)typedefstruct是结构体类型是结构体类型D)struct是结构体类型名是结构体类型名3.若若要要说说明明一一个个类类型型名名STP,使使得得定定义义语语句句STPs;等等价价于于char*s;,以下选项中正确的是,以下选项中正确的是A)typedefSTPchar*s;B)typedef*charSTP;C)typedefST

62、P*char;D)typedefchar*STP;BCDB洋渤髓谎品谴角宠绪糖租右苫弛皋摔犬丫坐楼器映处挠釜是剂廓籽迫梳槛第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件l若有以下说明和定义若有以下说明和定义 typedef int *INTEGER INTEGER p,*q; 以下叙述正确的是以下叙述正确的是_。 A) p是是int型变量型变量 B) p是基类型为是基类型为int的指针变量的指针变量 C) q是基类型为是基类型为int的指针变量的指针变量lD) 程序中可用程序中可用INTEGER代替代替int类型名类型名 B朴遣脐享罗穴厌乐握开赘凸顽忌昆框赛芍吕稚今州目航逮施怀栈侠另铝壳第10章结构体与共用体ppt课件第10章结构体与共用体ppt课件

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号