- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
§ 11.10 用typedef 自定义类型 Now, These 3 records are. 89101 99.0 89104 87.0 89106 65.0 input the inserted record: 0, 0? §11.8 共用体类型数据 (?p).name (?p).score … 或者用“ ? ”运算符, p? num, p?name, p ?score. 称?为指向运算符, “ ? ”优先级高于++, – –。 则:p ?num+1?(x1.num)++ ++p?num ?++(x1.num) 先使用x1.num, 再加1 先使x1.num加1,再用x1.num 访问x1的成员: 小结: 引用结构变量中的成员有三种方法: (2) 用指针变量 (?p).成员名 (?p).num (3) 用指向运算符?成员名 p ?num (1) 结构体变量名.成员名 x1.num 注意:指针变量p必须是结构指针型, 且有p=x1; 例:请指出下列程序的错误所在: struct person { char name[20]; int count; } x1={ZhongHua, 10}; main( ) { int *p; p=x1; printf (%s\n%d\n, (*p).name, (*p).count) } 错误的原因:p不是结构指针变量 可改为:struct persan *p 例:struct student { int num; char name[20]; char sex; int age; }; 与其他指向结构体数组的指针一样,可用指针指向结构体数组。 二、指向结构体数组的指针 main ( ) { struct student stu[3]={{10101, Li Lin , M, ?}, {…}, {…}}; struct student ?p; p=stu; while (pstu+3) printf(… , p?num, p ?name, p ?sex, p ?age); } 内存结构如下: 注: p+1为指向下一个元素的首地址。 stu[0] p+1 p+2 ? (p) 用地址传送,函数中形参用指针变量,实参可用 地址量或指针 三、用指向结构体的指针作函数参数 例/*---exp14_3.c---*/ #include stdio.h struct person { char name[20]; int count; } x[3]={{zhao, 4}, {qian, 3}, {sun, 6}}; void prt(struct person *pp); main( ) { int i; for (i=0; i3; i++) prt(x[i]); } void prt (struct person *pp) { printf(%s, %d, pp-name, pp-count); } 运行结果: zhao, 4 qian, 3 sun, 6 §11.7 链表 ? 解决了内存分配零乱的问题 ? 解决了数组存放数据的弊端 是用指针变量将非连续的数据块连成一 个整体的一种数据结构。 一种动态分配的数据结构。 1. 什么是链表? 例如: Head Head: 称为表头,仅存放一个地址,无数据。 数据D Null 数据C 数据B 数据A 数据 指针 : 为数据块,又称为链表的结点,由两部分 组成,数据和指针。 数据:该结点的具体数据 指针:下一个结点的地址 实现方法: 2. 用指向该种类型的结构指针作为表头; 3. 每一个结点中包含同种类型的指针变量用以存放下一个结点的地址。 1. 用结构型变量表示每一个结点; 内存分配函数,在动态区中分配一个长度为 size的连续空间,分配成功,返回一个指向该空间首地址的指针,未成功,返回值=0. 实现过程中用到的三个函数(由系统提供) ? malloc(size) ptr为指针变量,该函数释放最近一次调用malloc或calloc分配且由ptr指向的内存空间。 原C标准:malloc返回一个指向char型数据的指针。 新的C标准:为void ?类型,可通过强制类型转换。 ? free(ptr) struct student { long num; float score; struct student ?next; }; 同时定义三个指向这种类型的指针变量head, p1, p2. 例
您可能关注的文档
最近下载
- 略谈“双减”背景下的小学数学作业设计.pdf VIP
- 2025至2030病人自控镇痛泵行业项目调研及市场前景预测评估报告.docx
- 高中政治议题式教学在深化学生道德认知与价值观塑造中的策略研究论文.docx
- 公园管理制度.docx VIP
- 模具钳工(技师)理论考试复习题库(含答案).pdf VIP
- [科技出版社张鄂现代设计理论与方法课件]08new-第8章绿色设计.ppt VIP
- 2025年浙江省公安机关人民警察特殊职位公务员招录考试(刑事技术·法医)历年参考题库含答案详解(5卷.docx VIP
- 某引水工程取水口及泵站施工组织设计.doc VIP
- JTS145-2015 港口与航道水文规范.docx
- 黑布林阅读初三17《足球先生》中文版.docx
文档评论(0)