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

    《c语言程序设计教学资料》第12章-结构体和共同体.ppt

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

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

    《c语言程序设计教学资料》第12章-结构体和共同体.ppt

    第12章 结构体和共用体,主要内容,定义结构体类型变量的方法 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 共用体 用typedef定义类型,为什么要定义结构体类型,在程序例如何表示一人(姓名、年龄、性别)想表示多个人呢?如何用计算机程序实现下述表格的管理?,初始化,优点:结构紧凑,方便管理,数据的相关性强,便于查找,赋值时只针对某个学生,局部的输入错误不会影响全局和其他人信息,结构体和共用体,C语言允许用户根据具体问题利用已有的基本类型来构造自己所需的数据类型数组、结构体、共用体都数据构造性数据类型结构体定义:由若干不同类型的数据项组成(不同类型数据的集合),构成结构体的各个数据项称为结构体成员共同体定义:由若干不同类型的数据项组成,构成共同体的各个数据项称为共同体成员,数组、结构体、共同体比较,数组:相同类型数据构成,适合于对具有相同类型属性的数据进行批处理结构体:将不同类型的数据组织到统一的名字下,适合于关系紧密、逻辑相关、具有相同或者不同属性的数据进行处理,适合于数据库管理系统共同体:逻辑关系相关的不同类型数据集合,但数据成员是情形互斥的,每个时刻只有一个数据成员起作用。,struct 结构体名 数据类型 成员1名字;数据类型 成员2名字;数据类型 成员n名字;;,成员列表,结构体,定义结构体第一步:声明结构体模板 格式:,如:struct student int num;char name20;char sex;int age;float score4;char addr30;,声明结构体模板的主要目的是利用已有的数据类型定义一个新的数据类型 结构体模板只是声明了一种数据类型,定义了数据的组织形式,并未声明结构体类型的变量,定义结构体第二步:利用已经定义好的结构体数据类型定义结构体变量 定义结构体变量方式:,(1)先声明结构体模板,在定义结构体变量,struct 结构体名 结构体成员变量的定义;变量名1,变量名2,.,变量名n;,struct 结构体名 成员列表;struct 结构体名 变量名1,变量名2,.,变量名n;,(2)在声明结构体模板的同时定义结构体变量,(3)在直接定义结构体变量,struct 结构体成员变量的定义;变量名1,变量名2,.,变量名n;,此时不出现结构体名,方法二:struct student int number;char name20;char sex;int age;float score;stu1,stu2;,方法一:struct student int number;char name20;char sex;int age;float score;struct student stu1,stut2;,方法三:struct int number;char name20;char sex;int age;float score;stu1,stu2;,说明:结构体名(struct):用于标识一种新的数据类型,即结构体类型,可以省略。注意区分结构体类型与基本数据类型的不同,它是复合数据类型。结构体成员变量与普通变量的定义一样,它还可以是结构体变量。,嵌套的结构体,struct Date int month;int day;int year;,struct Stu int num;char name20;char sex;int age;struct Date birthday;char addr30;,用typedef定义数据类型,只是为一种已经存在的类型(系统固有或者用户自定义的数据类型)定义一个新名字而已,并未定义一个新的数据类型 例:typedef int integer;,typedef优点之一:有利于程序的通用性和移植性,程序会依赖于硬件特性,用typedef类型就便于移植。,例:用typedef来定义与平台无关的类型。定义一个叫INTEGER的int类型,在目标平台一上,它占4个字节:typedef int INTEGER;在某些平台下,int占2个字节。要使数据类型的取值范围不变,只需要做如下定义:typedef long INTEGER;也就是说,当跨平台时,只要改下 typedef 本身就行,不用对其他源码做任何修改。,typedef与#define有相似之处 例如:typedef int COUNT;#define COUNT int 作用:都是用COUNT代表int。But,它们二者是不同的。,#define是在预编译时处理的,它只能作简单的字符串替换;typedef是在编译时处理的。实际上它并不是作简单的字符串替换,而是采用如同定义变量的方法那样来声明一个类型。,结构体变量初始化,对字符数组类型结构体成员进行赋值时,必须使用字符串处理函数strcpy(),结构体变量的引用,例:,当出现结构体嵌套时,必须以级联方式访问结构体成员,结构体变量输入输出,结构体变量的地址是结构体变量所占内存空间的首地址,而结构体成员的地址与结构体成员在结构体中所处的位置及该成员所占内存空间的字节数相关,在定义了结构体变量以后,当然可以引用这个变量。但应遵守以下规则:(1)不能将一个结构体变量作为一个整体进行输入和输出。例:printf(“%d,%s,%c,%d,%fn”,stu1);(2)如果成员本身又属一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级的成员。只能对最低级的成员进行赋值或存取以及运算。例:,(3)对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)。例:stu2.score=stu1.score;sum=stu1.score+stu2.score;student1.age+;+student2.age;(4)可以引用结构体变量成员的地址,也可以引用结构体变量的地址。例:scanf(%d,(输入stud1.num的值)printf(%p,&stu1);(输出stud1的首地址),结构体所占内存的字节数,多数计算机为了提高内存的寻址效率,为特定的数据类型引入了特殊的内对齐需求。不同的系统和编译器,内存对齐的方式不同,为了满足处理器对齐的要求,可能会在较小的成员后加入补位,导致结构体实际所占内存的字节数比我们想象的多,结构体数组的定义和初始化,结构体指针的定义和初始化,以下3种形式等价:结构体变量成员名(*)成员名-成员名,向函数传递结构体,用结构体指针或结构体数组作为函数参数,向函数传递结构体的地址,按值调用,按地址调用,结构体变量作函数参数实现按值调用,结构体指针作函数参数,从函数返回结构体变量的值,共用体,共用体所占内存的字节数,不能为共用体的所有成员同时进行初始化,只能对第一个成员进行初始化。此外,共用体成员不能进行比较操作,也不能作为函数参数。,

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开