- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C07结构
C语言程序中少量变化的数据用变量来处理。数量不宜多。 批量同类型数据的处理用数组。 不同类型的数据的集合用什么数据结构来存放呢?这就是本单元要介绍的内容:用结构体和共用体类型处理不同类型数据的集合。 §7.1 结构体 struct student {int num; char name[20]; char sex; int age; float score; char addr[30]; }; 注意以下几点: ? 结构成员可以是任何基本数据类型, 也可以是数组,指针类型变量 ? 结构类型可以嵌套定义, 即一个结构中的的一个或多个成员是其他结构类型的变量 ? 同一结构内成员的名称不能相同 2 在定义类型的同时定义变量 3 无名定义 (不出现结构体名) 结构变量的内部表示 结构变量存储单元的分配是按照其类型的样板配置的, 依据各个成员在结构中出现的先后次序来分配空间 注意以下几点: 1 允许初值符的个数少于结构变量中成员的个数,但不允许初值符的个数多于结构变量中成员的个数。在前者的情况下,执行初始化语句时就用初值表中的初值符对结构变量中排在前面的成员进行赋值,而余下的没有对应初值符的成员就被隐式初始化,即:所有算术类型的成员被赋值0,所有指针类型的成员被赋予空指针常量。 例如: struct student who={”Zhanghua”,991105,{92,91,89,87,94}}; 那么,结构变量who中成员average就隐含地被初始化为0.0 。 2 初值符应是一个单一的表达式,可以用花括号括起来。对应的结构成员的值就是该表达式的值。它们应有相同的类型或者像简单赋值语句一样进行类型转换,即将表达式值的类型转换为对应结构成员的类型。 例如: static struct rectangle mybox={{2*3.14,9.0+4.18},{15.8-3.14,0.618*7}}; 例如: student1.num=10010; student1.age++; printf( ”%d\n”, student1.num); 结构变量可以进行各种运算,也可以引用成员的地址或结构体变量的地址. (2) 嵌套结构中成员的引用 结构类型可以嵌套定义, 即一个结构中的的一个或多个成员是其他结构类型的变量。并且只有最内层的成员才能参加运算,要连续使用“ .”运算符, 从外层结构变量找到内层结构变量,逐层存取,直至最内层的成员。 结构体数组的初始化(全部初始化时长度可省略) for(i=1;i=10;i++) {scanf( ”%s”,leader_name); for(j=0;j3;j++) if(strcmp(leader_name, leader[j].name)= =0) leader[j].count++; } printf( ”\n” ); for(i=0;i3;i++) printf( ”%5s:%d\n”,leader[i].name,leader[i].count); } 八、引用自身的结构和链表 例如: struct tnode{ char *word; int count; struct tnode *left; struct tnode *right; }; (2)链表 链表是C语言中很容易实现、而且非常有用的数据结构。它是动态进行存储分配的一种结构。 链表有若干种形式,如单向链表、双向链表、循环链表和二叉树等,每种形式都适合一定的数据存储类型。这些链表形式的一个共同特点是数据项之间的关联由包含在数据项自身的地址信息所定义,就是在每个数据项内部有指向该数据项类型的指针变量。这种数据项恰好用引用自身的结构来实现。 线性链表 链表与结构数组的相似之处:都由若干相同类型的结构变量组成,结构变量间有一定的顺序关系。 二者存在的差别: 1 结构数组中各元素是连续存放的,而链表中的结点可以不连续存放; 2 结构数组元素可通过下标运算或相应指针变量的“移动”进行顺序或随机访问;而链表中结点不便于随机访问,只能从链头开始一个结点一个结点地顺序访问; 3 结构数组在定义时就确定其元素个数,不能动态增长;而链表的长度往往是不确定的,根据问题求解过程中的实际需要动态地创建结点并为其分配存储空间。利用第7章中介绍的库函数malloc()、calloc和free()可实现内存空间的动态分配和释放。 对链表的操作包含建立链表、遍历链表、删除链表中的结点、将结点插入链表等. uni
您可能关注的文档
最近下载
- 当代中国政府与政治全套教学课件汇总.pptx VIP
- 2025年全国普通高等学校体育单招真题英语试卷(原卷+ 完整版2025.pdf VIP
- 2024年全国普通高等学校运动训练、民族传统体育专业单招考试数学试卷.pdf VIP
- 2025广东惠州市生态环境局博罗分局和博罗县污染防治攻坚战总指挥部办公室招聘编外人员38人备考试题及答案解析.docx VIP
- 2025广东惠州市生态环境局博罗分局和博罗县污染防治攻坚战总指挥部办公室招聘编外人员38人备考题库及答案解析.docx VIP
- 华荣KJG-口/口Y系列说明书(和利时保护器).doc VIP
- 医疗器械 质量手册.doc VIP
- SYB第八步(3)-制定销售和成本计划.ppt VIP
- 2025广东惠州市生态环境局博罗分局和博罗县污染防治攻坚战总指挥部办公室招聘编外人员38人考试备考试题及答案解析.docx VIP
- 2024年浙江省嵊泗县人民医院公开招聘护理工作人员试题带答案详解.docx VIP
文档评论(0)