好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

IT计算机课件结构体与公用体.pdf

79页
  • 卖家[上传人]:奇异
  • 文档编号:363469010
  • 上传时间:2023-10-08
  • 文档格式:PDF
  • 文档大小:13.16MB
  • / 79 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第八章结构体与共用体8-1概述8.2定义结构体类型和定义结构体变量8 3 _结构体变量的引用8 A结构体变量的初始化8.5结构体数组&6指针与结构体8 7用指针处理链表*8.8共用体*8,9枚举类型8.10用typedef定义类型&T概述.Y A 皿L 数组:同类型数据的集合;C构造类型1结构体:不同类型数据的集合;共用体:不同类型的量共用存储单元若:表示学生多门课成绩,各门课成绩数据类型一致,适合用数组表示若:对一系列整数排序,适合用数组表示3若:编程处理若干学生的基本情况;其中每个学生的基本情况由若干项组成,而各项的类型可能相同或不同项目:数据:类型:该例中构成每个学生基本情况的数据类型不同,可采用结构体这种数据类型实现学号 姓名 性别出生日期成绩 号码210510Li FengM 1984.5.4 680 029-8482500长 整/字 串 字 串 字 符 字 串 整 型 字串48.2定义结构体类型新 薇 B 构体变量1.定义结构体类型定义一般形式:struct结构体名类型标识符成员名1;类型标识符成员名2;II类型琮识符成员名n;);其中:1)struct结构体名组成具体的结构体类型标识符,可用这个结构体类型标识符去定义变量等对象;2)结构体名、成员名应符合标识符命名规则;3)类型标识符确定各成员类型;5【例】定义可表示学生基本情况的结构体类型。

      项目:学号 姓名 性别出生日期成绩 号码数 据:010510 Li Feng M 1981.5.4 680 029-8482500类型:长 整/字 串 字 串 字 符 字 串 整 型 字串struct student long num;char name20;char sex;char birthday12;float score;char tel15;);/*特定结构体类型标识*/*该类型共有6个成员*/L 61)结构体不可能有统一的结构,因此一个结构体的成员数目、各成员的类型必须依据具体情况由用户自己定义;2)一个C程序可定义多个结构体类型;定义的位置可在函数之内,也可在函数之外;位置决定其有效范围;如:结构体类型1定义;main()y-:-(结M体类型2定义;类型2有效类型1有效;funl()573)成员名可与程序中其它量同名,且互不干扰;4)成员的类型也可是已定义过的结构体类型;如:struct date/*该结构体有3个成员*/int m;int d;iny y;struct student/*该结构体有6个成员*/long num;char name20;char sex;struct date birthday;/*成员类型:结构体*/float score;char tel15;85)定义结构体类型仅仅声明了一种数据结构,编译系统是不会为类型分配存储空间的;此时在有效范围内,可用已定义的结构体类型去定义结构体变量或数组,编译系统将为结构体变量或数组分配存储空间;2.定义结构体类型的变量三种定义方法:1)先定义结构体类型,再用类型标识去定义变量struct student stul,stu2;struct student是已定义的结构体类型标识符;对stul stu2是所定义的结构体变量;编译时将为结构体变量分配各自的存储空间;2)定义类型的同时定义变量struct student/*各成员的定义*/stul,stu2;3)不使用结构体名,定义类型的同时定义变量struct/*无结构体名*/;,stul,stu 2;说明:界结构体变量可以是局部的或全局的。

      器结构体变量存储空间大小为各成员长度之和;如变量stul存储字节数:4+20+1+6+4+15=5011对 结构体变量的存储结构:各成员按定义顺序连续存储;如:struct student long num;char name20;char sex;char birthday12;float score;char tel15;stul,stu2;stulnumnamesexbirthdayscoretel4201、共56字节12415成员 成员字节12如:struct date int m;int d;iny y;struct student long num;char name20;char sex;struct date birthday;teifloat score;口char tel15;成员stulnumnamesexbirthdayscore4、20m1 共50字节d6y4157成员字节 stul,stu2;138.3结构体变量的引用,、.数组引用的单位是元素,而不能引用整个数组结构体变量引用的单位则是成员,同样结构体变量不能被整体引用1.结构体变量各成员的引用引用形式:结构体变量名,成员名其中:成员运算符,:一级,自左而右;如:按以上定义stul.numstul.namestul.nameistul.birthday.y引用结构体变量stu 1的num成员;引用stul的name成员(字符指针);引用name成员的第i个元素;只能对最低级成员进行引用;2,结构体变量各成员的输入、输出应按成员类型选择输入、输出的格式符。

      例】按以上定义输入scanf(%ld,&stul.num);,于&*/scanf%d,%d,%cT,&stul-birthday,m,&stu 1,birthday.d,&stu 1.birthday.y);,0110234/(不保存前导0)5,242981/【例 1 gets(stu l.name);/*成员 name 的指针*/seanf(,%sn,stu 1.tel);/*成员tel的指针*/Li Feng/021-8482500/【例】按以上定义输出printf(munber:%07ldn,stul.num);/*前导0*/printf(”d,%d,%cr,stul.birthday.y,stul-birthday-m,stul.birthday.d);printf(name:%sn,stul.name);for(i=0;stul.namei!=0;i+)/*数组成员输出*/-printf(%c,stul.namei);说明:,与口运算符同为一级,自左而右运算163.成员的赋值1)数值型成员赋值如:stul,num=110234;/*不力口前导0*/stul,birthday.y=1981;stul-birthday,m=5;2)字符数组成员赋值如:strcpy(stul,name,Li Feng);错误:stul.name=Li Feng;173)结构体变量间的赋值如:stu2=stul;注:TC下允许同类型结构体变量间直接赋值;其结果是按成员一一对应赋值。

      4.对成员对象可像普通变量一样进行相应运算如:sum=stul.score+stu2,score;如:stul.num+;/*,1 级/+2级*/先访问成员num,而后num自加1;185,结构体变量的指针、结构体成员的指针注:&优先级为2级,低于,和口;图示:变量stul的指针:&Stljl num*lnum成员指针:&stu 1.numname成员指针:stul.namename第i个元素指针:&stu 1.nameibirthday最低级成员y的指针:&stul,birthday,y-score成员tel的指针:stul.tel一 网”r f g好 也 亭 学 触婚,,I8.4结构体变量的初始化=,a,&stul.namei=,z,)=,a,&stul.namei=,z,)、stu2,namei-=32;printf(“nt%ld,%s,%7,2f2stul.num,stub name,stul.score);printf(nt%ld,%s,%Z2fnn,stu2,num,stu2,name,stu2,score);/*main*/218.5结构体数组数组是同类型元素的集合;结构体数组也是同类型元素的集合,只不过每个元素的类型均为相同的结构体类型。

      前面介绍的结构体变量可用来表示一位学生的基本情况,要表示多个学生的基本情况时,采用结构体数组比较方便221.结构体数组的定义和初始化例:struct student long num;char name20;float score;stu3=99001,Li Feng,89.5,99002,Wang Yi,70.5,99003,Zhao Hui,92;说明:1)数组stu各元素类型相同,都为struct student型;2)结构体数组stu的存储字节数为:元素类型长X元素个数=(4+20+4)X 3=84字节233)结构体数组stu的存储结构stuO stul 2889.54 J99002Wang Yi070.5stul.score99003stu2.numZhao Hui092.0784 byte-242.结构体数组的引用“结构体数组在引用时,不仅要确定引用哪一个元素,还要确定引用该元素的哪一个成员引用形式:数组名 下标.成员名其中:运算符口与.同为一级,自左而右结合;过程:依据数组名及下标先定位到元素,然后再定位到成员;如:stuO.num访问stu数组首元素的成员num;stul.score访问以1为下标那个元素的score成员;a w arn 这【例】编程求三位学生的平均成绩,并输出成绩最高者的学号、姓名、成绩。

      main()struct/*定义局部结构体类型及数组*/long num;char name20;float score;stu3=99031,Li Lin,89.0,99032,Wang Fang,71.0,99033,Zhao Ping”,92.0);float maxs,sum=0;int i,p;;)main()结构体类型、结构体数组stu的定义及赋初值;float maxs,sum=0;int i,p;maxs=0;r for(i=0;imaxs)maxs=stui.score;p=i;1 printf(ntaverage=%fn,sum/3,0);prin曲 tnum:%ld,name:%s,score:%7,2fn”,stup.num,stup,name,stup.score);)27【例】30张选票,对三名侯选人之一投票选举,输入得票人名字,按名字计数,输出最后选举结果include stdio.h#define N 30struct person char name20;int count;);main()struct person led3=ledO.nameled0.count0,“Zhang”,0,Wang,0;-;)main()28 struct person led3=Li,0,Zhang,0,Wang,0;char lname20;int i,j;rfor(i=l;i=N;i+)/*i控制选票张数*/printf(Input%d NO.name:”,i);gets(lname);rfor(j=0;j3;j+)/*j控制数组下标*/if(strcmp(ledj.name,lname)=0)/*串比较*/ledj,count+=l;break;/*计票*/1 for(i=0;i (*p),num p-num3),称为指向成员运算符;1级,自左而右;p-num中-代替了*和.运算符,看着更直观;如:p-score:访问p所指向变量的score成员;p-namei:访问p指向变量的name成员第i个元素。

      322.用结构体指针变量访问结构体数组元素【例】输入/输出三位学生基本情况,计算平均成绩#include stdio.h pn#include math.hstruct student long num;char name20;float score;main()struct student*p,stu3;int i;float sum=0;;.;p=stu;)stulstu 2。

      点击阅读更多内容
      猜您喜欢
      2020年四川省广安市中考物理试卷(附答案详解).pdf 2022年北京市西城区中考数学二模试卷(解析版).pdf 美容习题(附答案).pdf 2021年四川省资阳、眉山、遂宁、广安、自贡、广元等六市联考高考物理一诊试卷.pdf 【单元卷】人教版2022~2023学年小学五年级数学上册第六单元测试卷(二)(含答案与解析).pdf 《资产评估》详解课后习题及答案-第五章-房地产评估.pdf 危险化学品应急救援安全技术专业知识考试题(附含答案).pdf 初中数学教材课后习题参考答案【人教版七年级下册】.pdf 2022年安徽蚌埠铁路高三第六次模拟考试化学试卷含解析.pdf 2021年贵州省生物高考真题【答案解析】.pdf 2021年执业药师《药学专业知识(一)》预测试题六(附答案).pdf (本科)税法教学设计教案NO2.pdf 【单元卷】北师大版2022~2023学年小学五年级数学上册第四单元测试卷(二)(含答案与解析).pdf 材料力学答案第四版单辉祖课后答案.pdf 2021-2022学年浙江省七彩阳光新高考研究联盟高三(上)返校物理试卷(附答案详解).pdf “爱护环境”主题班会教案设计8篇.pdf 【单元卷】苏教版2022~2023学年小学三年级数学上册第一单元测试卷(二)(含答案与解析).pdf 电力电缆工岗位理论知识模拟题及答案.pdf 土建质量员复习题及答案.pdf 2023人教版六年级数学上册期末试卷附答案.pdf
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.