c语言程序设计20第二十讲(第九课).ppt

  1. 1、本文档共97页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
考试时间及地点 时间 2010年1月6日 下午:14:30-16:30 地点 SY210 高级语言程序设计 主讲教师:贾彩燕 计算机与信息技术学院 计算机科学与技术系 cyjia@bjtu.edu.cn 第九章:结构和其它数据机制 主要内容 结构(struct)/结构体 结构与函数 联合(union)/共用体 枚举(enum) 编程实例 链接结构(自引用结构) 字段 结构 结构是一种构造数据类型 用途:把不同类型的数据组合成一个整体-------自定义数据类型 结构类型定义 结构变量的定义 先定义结构类型,再定义结构变量 一般形式: 定义结构类型的同时定义结构变量 一般形式: 结构变量的初始化 形式一: 定义结构类型 程序里反复使用的结构最好定义为类型 typedef struct { double x, y; } POINT; typedef struct { POINT center; double radius; } CIRCLE; typedef struct { POINT lu; POINT rd; } RECTANGLE; 定义结构成员时利用结构标志  struct point { double x, y; } ; struct circle { struct point center; double radius; } ; struct rectangle { struct point lu; struct point rd; } ; 例 定义为结构类型,可以使程序更简短清晰。例:居民身份证信息的结构类型定义: typedef struct { char name[20]; /* 名字字符串用多长? */ int sex; char nationality[10]; int born_in[3]; char address[50]; int date_of_issue[3]; int valid_years; char issued_by[30]; char id_number[18]; char photo[100][64]; } IDCARD; 无效结构定义 结构成员不能是被描述的结构本身。 非法结构描述的例子: struct invalid { int n; struct invalid iv; }; 结构的实现 结构的实现 一个结构占一块连续存储,各成员顺序存放。 CIRCLE对象的存储方式。 typedef struct { POINT center; double radius; } CIRCLE; 对齐问题 结构成员类型可不同,可能出现对齐问题: struct exam { char aa; int nn; double xx; }; 为了效率,硬件通常规定各种基本类型数据的摆放方式。例如,通常要求两字节表示的整数从偶数地址的单元开始存放;需要8个字节表示的双精度数,可能要求从8(或4)的倍数地址的单元开始存放 系统对整个结构对象的存放也可能有起始位置要求 结构变量的使用 设有POINT pt1, pt2; CIRCLE circ1, circl2; 整体赋值 同类型结构变量可整体赋值,效果是各成员分别赋值: pt2 = pt1; 结构不能做相等/不等比较 成员访问 访问结构成员用圆点运算符(.),具有最高优先级,自左向右结合。例子: pt2.y = pt1.y + 2.4; circ1.center.x = 2.07; circ1.center.y = pt1.y; 结构、数组与指针 结构可以有数组成员,也可以定义一组以结构为元素的数组(结构数组) 例:用结构数组重构C程序关键字统计程序。 两种实现: 1)两维字符数组和计数器数组; 2)用字符指针数组和计数器数组。 更合理方式是用一个结构表示与一个关键字有关的所有信息。为此可定义结构类型。 typedef struct { char * key; int count; } KEYC; /* “关键字计数器”类型 */ 程序数据结构就是一个KEYC数组,定义时初始化: KEYC keytable[32] = { auto, 0, break, 0, ... ..

文档评论(0)

189****6140 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档