欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《结构体与共用体》PPT课件.ppt

    • 资源ID:5568144       资源大小:331.99KB        全文页数:37页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《结构体与共用体》PPT课件.ppt

    第8章 结构体与共用体,概述,在事务处理中,常需要将一些关系密切但类型不同的数据项组织在一起,并为其取一个整体名字,形成一个结构。,C语言中,就称其为结构体。,结构体通常由不同数据类型的数据项(成员)组成,一个结构体可包含若干成员,每个成员具有自己的名字及数据类型。,结构体类型的定义,和简单类型不同,结构体类型是根据需要由程序员自行定义,因此在使用之前必须先定义结构体类型,一般格式:,struct 结构体名 结构体成员表;;,struct是关键字,称为结构体定义标识符,而结构体名则由程序员自己命名。大括号中的结构体成员表包含若干成员,每一个成员都具有如下的形式:,数据类型标识符 成员名;,对一个学生的描述,其结构体类型定义如下:struct stud_type char name10;long num;char sex;int age;float score5;char address10;,说明:,(1)定义一个结构体类型只是描述了此结构体的组织形式,在编译时并不为其分配存储空间,即仅描述此数据结构 的形态或者说模型,故不能对定义的一个结构体类型进 行赋值、存取或运算。,(2)结构体的成员可以是简单变量、数组、指针、结构体等。,(3)结构体类型定义可以放在函数内部,也可以放在函数外部。若放在内部,则只在函数内有效;若放在外部,则从定义点到源文件尾之间的所有函数都有效。,(4)结构体成员的名字可以同程序中的其它变量同名,二者不会相混,系统会自动识别它。,结构体变量,结构体变量的定义,(1)先定义类型再定义变量,struct stud_type char name10;long num;char sex;int age;float score5;struct stud_type student1,student2;,(2)在定义类型的同时定义变量,struct stud_type char name10;long num;char sex;int age;float score5;student1,student2;,(3)直接定义结构体变量,struct char name10;long num;char sex;int age;float score5;student1,student2;,说明:,(1)在定义结构体类型时,系统并不分配内存空间,仅当定义结构体变量时,系统才为被定义的每 一变量分配相应的存储单元。,(2)结构体变量的定义一定要在结构体类型定义之 后或同时进行,对尚未定义的结构体类型,不 能用它来定义结构体变量。,结构体变量的初始化,所谓结构体变量初始化,就是对其成员变量赋初值在赋值时应注意按顺序及类型依次为每个结构体成员指定初始值。,一般格式:,struct 结构体类型名 结构体变量=初始化值列表;,说明:,(1)初始化值列表中初始化数据之间用逗号分隔。,(2)初始化数据的个数一般与成员的个数相同,若 小于成员数,则剩余的成员将被自动初始化为0。,(3)初始化数据的类型要与相应成员变量的类型一致。初始化时只能对整个结构体变量进行,不能仅对结 构体类型中的某些成员进行初始化赋值。,struct date_type int year;int month;int day;;struct stud_type char name10;long num;char sex;struct date_type birthday;float score;main()struct stud_type s1=wang,196103,m,1978,10,12,98;struct stud_type s2=liu,196105,m,1980,9,22,88;,结构体变量的引用,对结构体变量成员的引用,在C语言程序中,不允许对结构变量整体进行输入输出操作和除赋值外的各种运算,只能是对其成员进行此类操作。,引用结构体变量成员的一般形式:,结构体变量名.成员名,其中“.”是结构体成员运算符,其优先级别最高,结合性是自左至右。,如:对上例定义的结构体变量s1,s2,可如下操作:scanf(%s,s1.name);scanf(%f,【例8.1】输入一个职工的工资信息,整体 赋值给另一个变量,在屏幕上输出。,#include stdio.hstruct ym_type int y;int m;struct salary_type char num5;char name17;struct ym_type ym;float salary;float other;float cost;main()struct salary_type w,w0;printf(请输入姓名(其中可以包含空格):);gets(w0.name);printf(请输入工作证号、参加工作年、月、基本工资、其他工资、扣款n);scanf(%s%d%d%f%f%f,w0.num,结构体数组,结构体数组的定义,struct date_type int year;int month;int day;;struct stud_type char name10;long num;char sex;struct date_type birthday;float score;char address10;s13;struct stud_type s25;,结构体数组的初始化,stuct stud_type s32=wang,196103,m,1978,10,12,98,xian,zhang,196102,f,1977,1,10,87,Beijing;,【例8.2】用结构体数组存储学生信息,每个学生有姓名、学号和成绩。从键盘按学号顺序输入N名学生信息,再按成绩从高到低的顺序输出各学生的全部信息。,#define N 4#include struct int num;char name11;int score;t,sN;main()int i,j,k;printf(n请输入第一个学生的学号:);scanf(%d,结构体和函数,结构体成员可以作为函数的实参,而形参为与成员同类型的变量。此时传递的是单个成员值,与同类型的变量传递规则相同。,【例8.3】在main()函数中,输入一个学生信息,再调用print函数输出。显然print函数 的形参可以用结构体变量。,#include stdio.hstruct st_type char num7;char name21;char sex;int age;float score;void print(struct st_type s)printf(输出:学号 姓名 性别 年龄 成绩n);printf(%9s%20s%4c%6d%8.1fn,s.num,s.name,s.sex,s.age,s.score);main()struct st_type s0;printf(请输入姓名(可含空格):);gets(s0.name);printf(请输入学号、性别、年龄、成绩(各项用空格分开)n);scanf(%s%c%d%f,s0.num,返回值为结构体类型的函数,定义返回值为结构体类型函数的一般形式为:,结构体类型名 函数名(形参表),【例8.4】在main函数中定义一个结构体数组,多次调用input函数输入各学生的信 息,返回值赋给结构体数组元素,再多次调用print函数输出。,#include stdio.hstruct st_type char num7;char name21;char sex;int age;float score;struct st_type input()struct st_type s0;printf(请输入姓名(其中可以包含空格):);gets(s0.name);printf(请输入学号、性别、年龄、成绩(各项用空格分开)n);scanf(%s%c%d%f,s0.num,在需要节省内存储空间时,C语言还提供了一种由若干个不同类型的数据项组成,但共享同一存储空间的构造类型。,共用体,由于共享的特性,只有最新存储的数据是有效的。,一种构造类型数据,共用体由若干不同类型的数据项组成,构成共用体的各个数据项称为共用体成员。,共用体,定义的一般形式:,union 共用体名 成员表列;变量表列;,共用体变量所占的内存长度等于最长的成员的长度,共用体变量,只有先定义了共用体类型,才能定义基于该类型的变量,不能直接引用共用体变量,只能引用共用体变量中的成员,共用体类型数据的特点,1.同一个内存段可以用来存放几种不同类型的成员,但在每一瞬间只能存放其中一种,而不是同时都存放;,2.共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用;,3.共用体变量的地址和它的成员的地址都是同一地址;,4.共用体类型可以出现在结构体类型定义中。,共用体应用举例,【例8.5】通过共用体变量,将一个整数的 两个字节分别按十六进制和字符方式输出。,union int_char int i;char ch2;print(union int_char x)printf(i=%dni=%Xn,x.i,x.i);printf(ch0=%X,ch1=%X n,x.ch0,x.ch1);printf(ch0=%c,ch1=%cn,x.ch0,x.ch1);main()union int_char x;x.i=25419;print(x);,ch0,ch1,【例8.6】一个班体育课成绩,男生测验1500米成绩为分秒,女生测验柔韧性(分A、B、C、D和E 5等)和俯卧撑次数,将测验数据放在一张表中,表中包括学号、姓名、性别和体育成绩。最后一项“体育成绩”的内容根据性别填写不同的内容,编写程序,若输入、输出表中的信息。,#define N 2#include struct boy int m;float s;struct girl char f;int n;struct student char num7;char name10;char sex;union struct boy ms;struct girl fn;score;stN;,main()int n,i;for(i=0;iN;i+)printf(请输入:学号、姓名、性别n);scanf(%s%s%c,sti.num,sti.name,结构体与共用体的比较,定义形式相似,但是它们的含义不同。,结构体是将多个不同类型的数据组合成一个整体进行存储与管理。,共用体则是使多个不同类型的数据使用同一存储空间进行存储。,存储空间的分配方式不同,结构体变量所占内存长度是各个成员占的内存长度之和,其每个成员均有自己的存储空间。,共用体变量所占的内存长度等于最长的成员的长度,任何时候,共用体变量只能存放一个成员。,枚 举 类 型,枚举类型定义,一般形式:,enum 类型标识符 枚举值名表;,花括号中的枚举值形式如下:,常量标识符1,常量标识符2,常量标识符n,例如:enum weekdaysun,mon,tue,wed,thu,fri,sat;,枚举类型的变量,enum weekday d1,d2;/*定义枚举变量d1和d2*/,注意:一个枚举变量的值只能取该类型定义的几个枚举常量,d1=sun;d2=d1;,若想将整数值赋给枚举变量,须作强制类型转换。,d1=(enum weekday)2;,相当于d1=tue;,【例8.7】输入一整数,转换为枚举类型,并存 入枚举类型的变量,再显示与之对应的星期值。,#include stdio.hmain()enum weeksun=7,mon=1,tue,wed,thu,fri,sta;enum week weekday;int i;printf(input integer:n);scanf(%d,用typedef定义类型,可以用typedef声明新的类型名来代替已有的类型名,typedef int INTEGER;typedef float REAL;,int i,j;float a,b;,INTEGER i,j;REAL a,b;,typedef structint month;int day;int year;DATE;DATE birthday;,作 业,P155.8.1,8.2,8.10,

    注意事项

    本文(《结构体与共用体》PPT课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开