[经济学]第8章 用户自定义数据类型软工.pptVIP

[经济学]第8章 用户自定义数据类型软工.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[经济学]第8章 用户自定义数据类型软工

第八章 用户自定义数据类型 主要内容: 结构类型 联合类型 枚举类型 用typedef定义类型 §8.1 结构类型及其变量的定义 数组可以存放一组相关的同类型数据,但是不能将不同类型的数据放入同一数组中。 如果需要把一个学生的学号、姓名、性别、年龄、各门功课的考试成绩等不同类型的数据放在一个构造型数据类型中,就需要另外一种新的数据类型:结构类型或者联合类型数据。 一个结构类型的变量中可以独立存放多种类型的数据。 8.1.1 结构类型的定义 结构类型需要自定义,先定义结构类型后,再定义结构变量。 成员运算符: . 功能: 访问结构变量中指定的成员 优先级: 最高,与括号相同 例: 用结构变量存放学生记录(学号、姓名、4门成绩) 如:方式(2) struct student { long num;char name[20]; int score[4]; } a[3] ={ { zhang, 89, 90, 91, 92 }, { liu, 68, 69, 70, 71 }, li, 57, 58, 59, 60 } }; 数组各元素在内存中连续存放,如右图所示: 例 用结构数组存放并输出5个学生记录 如:方式(1) struct student { long num; char name[20]; int score[4]; }; struct student *p1,*p2; 表示p1、p2均是指向结构变量的指针变量,可以指向任何struct student 类型的结构变量。 如:struct student x,y; p1=x; p2=y; 也可p1=NULL /*NULL表示空指针*/ 注意: p已定义为指向struct student类型的指针变量,则p只能指向1个结构变量,而不能指向结构变量的某一成员(即p的地址不是成员的地址)。 如:p=stu.name;( 错误) 补充:用结构体指针处理链表 如果使用数组存放一组数据,必须定义数组的大小。在无法确定数组大小的情况下,必须将数组定义得足够大,以能适应不同的需要,这将造成内存资源的浪费。 使用链表能够克服上述缺点,因为链表的元素是动态分配的,即在需要时才开辟一个结点的存储单元,存储空间是程序根据需要在程序运行过程中向系统申请获得,链表也不要求逻辑上相邻的元素在物理位置上也相邻,它没有顺序存储结构所具有的弱点,因而就可以解决内存资源和用户需求之间的矛盾。 一、链表的构成 由头指针和若干个结点按下面形式构成: 特点: 各个结点在内存中可以不连续存放。 结点之间的联系用指针实现,即在结点结构中定义一个成员存放下一结点的首地址。 尾结点的指针域置为“NULL(空)”,作为链表结束的标志 三、有关链表的函数 #include stdlib.h 1.开辟一个动态存储区函数 函数原型:void *malloc(unsigned size); 调用格式: malloc(size) 功能: 在内存的动态存储区中分配一个长度为size个字节的连续空间 返回值: 空类型指针,其值为该连续存储单元的起始地址,若出错返回0 有关链表的函数 2. 释放动态存储区函数 函数原型:void free(void *p); 调用格式: free(p) 功能: 释放p所指向的动态存储区 返回值: 无 四、建立动态链表 五、输出链表 链表结点类型定义: struct st { long num ; int score ; struct st *next ; 指针域 }; 二、链表结点的结构 数据域 每个结点都是结构体类型,有两个域: 数据域存放实际数据 指针域存放下一结点的首地址。 /* creat函数返回一个指向链表头的指针 */ 例:连续输入各结点数据,当输入的学号为0时表示建表结束。 struct st *creat() {struct st *head=NULL,*p1,*p2; printf(请输入学号,成绩(学号为0表示结束)\n); p1=p2=(struct st *)malloc(LEN); scanf(%ld,%d,p1-num,p1-score); while(p1-num!=0) {if (head==NULL) head=p1; else p2-next=p1; p2=p1;

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档