网站大量收购闲置独家精品文档,联系QQ:2885784924

[理学]C第9章结构体.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[理学]C第9章结构体

结构的概念 结构是由若干(可为不同类型的)数据项组合而成的复合数据对象,这些数据项称为结构的成员或成分。 结构(体)是一种构造数据类型。 用途:把不同类型的数据组合成一个整体 结构声明 结构体类型声明的一般形式 (1)先声明结构体类型,再定义变量名 一般形式: (2)声明结构体类型的同时定义结构体变量 一般形式: 引用规则 结构体变量不能整体引用, 只能引用变量成员 形式一: 三种形式: 链表的删除 struct student *del(struct student *head,long num) { struct student *p,*q; p=q=head; /*注意:此语句不可漏掉*/ while(p!=NULL) { if (p-num!=num) {q=p;p=p-next;} else {if (p==head) head=p-next; /*要删除的结点是头结点*/ if (p==NULL) q-next=NULL;/*要删除的结点是尾结点*/ else {q-next=p-next;p-next=NULL;}/*要删除的结点是中间结点*/ break; } } return head; } 联合也是一种数据构造机制 联合类似于结构,也是几个类型相同或不同的成员的组合 联合区别于结构,联合的成员共享同一片存储区 联合在某个时刻只能访问它的某一个成员的值 声明联合类型与结构类似,将关键字改为union 9.3 联合 union { int n; double x; char c; } u1, u2; union data fun10(int m, union data u); union data u1, u2, u3, u4, *up; up = (union data *) malloc( sizeof( union data)); 联合变量的初始化 只能对第一个成员初始化 如:union data u1 = {3}, u2 = {5}; 联合变量的使用 可整体赋值、成员访问、取地址。如u1.c = ‘\n’; 可定义指向联合的指针,可从这种指针出发,通过-运算符访问被指联合变量的成员 联合变量的存储实现 成员共用同一存储位置,存储区大小由大成员决定 9.3 联合 联合变量使用的基本规则 联合变量可看成能改变面目的变量,不同时刻可能以不同性质出现,表示不同的东西。 使用原则:应该按所保存成员的方式使用:最近对本变量用什么方式赋值(当作哪个成员),就用同样方式(通过同样成员)取值。遵受本规则的使用有效,取值与赋值的一致性由编程者保证,C系统不检查。 未遵守规则的使用(取值方式与前面赋值不一致),语言定义未规定效果,结果依赖于具体系统。 9.3 联合 前面已经使用过枚举常量 声明枚举类型 enum 枚举标志 {枚举常量名,…}; 如:enum color {RED, GREEN, BLUE}; 使用枚举标志 如:enum color cr1, cr2; 使用typedef定义枚举类型 typedef enum {RED, GREEN, BLUE} COLOR; COLOR cr3, cr4 枚举类型变量实际看作整型变量。主要是提高可读性。枚举常量由编译处理,一次可定义一组常量,很方便。 可给枚举常量指定值,随后的枚举常量递增取值。 9.4 枚举 默认RED为0,GREEN为1,BLUE为2. 例:enum color {RED = 1, GREEN, BLUE, WHITE = 8, GREY = 12, BLACK, PINK = 15}; RED = 1, GREEN = 2, BLUE = 3,WHITE = 8, GREY = 12,BLACK = 13, PINK =15 简单实例 角度可以表示为弧度(0到2π)或角度(度分)。可定义类型ANGLE,所有处理程序都基于该类型 9.4 枚举 enum ANGLETAG {DEGREE, RADIAN}; typedef struct { enum ANGLETAG tag; union { struct { int deg, mnt } degree; double radian; } dt; } ANGLE; 使用结构进行数据压缩的表示方式 把结构成员定义为字段的方式与一般结构成员定义的方式类似 附加规定 成员的类型只能是int或unsigned int 在字段描述后给出字段的二进制位数 字段位数不能超过一个字 举例: 使用字段会降低访问结构成员的效率 9.7 字

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档