c语言课件第83章.pptVIP

  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文档。上传文档
查看更多
c语言课件第83章

8.5动态存储空间分配 动态存储空间分配相对于静态存储空间分配具有如下特点: ①不需要预先分配存储空间; ②分配的空间可以根据程序的需要扩大或缩小。 C语言提供了若干动态存储空间分配函数,常用的有:malloc函数、calloc函数和free函数。 (1) malloc()函数 原 型:void *malloc(unsigned int size); 头文件:#include stdlib.h 参 数:size――参数是一个无符号整形数,表示分配存储空间的字节数 功 能:在内存的动态存储区中分配一个长度为size的连续空间 说 明:若成功,返回指向分配区域起始地址的指针(类型为void);若失败,返回空指针NULL (2) calloc()函数 void * calloc( unsigned n, unsigned size ); 头文件:#include stdlib.h 参 数:size――表示分配存储空间的字节数;n――有多少个size 功 能:在内存的动态区存储中分配n个长度为size的连续空间 说 明:若成功,返回指向分配区域起始地址的指针(类型为void);若失败,返回空指针NULL (3) free()函数 原 型:void free(void *ptr); 头文件:#include stdlib.h 参 数:ptr欲释放内存单元的地址 功 能:在完成对所分配内存空间的使用之后,要通过调用free()函数来释放它,释放后的内存区能够重新分配给其他变量使用 说 明:参数ptr必须是先前调用动态空间分配函数(malloc或calloc等)时返回的指针 例8-10动态分配一块区域,存储一个学生数据,并输出该学生数据。 程序清单8-11 StructStu.c #include stdio.h #include stdlib.h struct sStudent{ int nNum; char *cName; char cSex; float fScore; } *psStu; void main(void){ psStu = ( struct sStudent * ) malloc( sizeof ( struct sStudent ) ); 程序清单8-11 StructStu.c psStu-nNum=102; psStu-cName=Zhang ping; psStu-cSex=M; psStu-fScore=62.5; printf( Number=%d\nName=%s\n, psStu-nNum,psStu-cName ); printf(Sex=%c\nScore=%f\n, psStu-cSex,psStu-fScore); free(psStu); } 运行结果如图8-22所示。 8.6链表 8.6.1链表的概念 问题:结构体内的成员类型可以是其本身吗? 程序清单8-12 StuTest.c 程序清单8-12 StuTest.c #include stdio.h #include stdlib.h struct student{ int nNum; char cName[20]; int nScoreAvg; struct student sStu; }; void main(){ printf(仅用来测试!); } 其编译结果如图8-23。 说明 错误提示的意思为:用正在定义的student声明成员变量stu1有错误。这样,可以得到结论:结构体内的成员不可以用“自己”去定义。 再次进行编译,发现错误没有了,编译通过了,程序可以运行了。这是什么原因呢? 链表 (1)链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表各结点指针域进行链接的。链表由一系列结点组成,结点可以在运行时动态生成。 数据域和指针域 (2)链表中的每个结点通常由两个域组成,一个称为数据域data,另一个称为指针域next。数据域用来存储用户的数据,而指针域是一个结构类型的指针,用来存储下一个结点的地址。结点的结构定义的一般形式为: struct node { 数据类型 data; struct node * next; }; 动态数据结构-链表 动态数据结构是在程序的执行过程中可以扩大和缩小的数据结构 动态数据结构的创建和操作都需要使用指针 Linked List 链表是指将若干个数据项按一定的原则连接起来的表。链表中每一个数据称为节点。链表连接的原则是: 前一个节点指向下一个节点;而且只有通过前一个节点才能找到下一个节点. 在 C中,每个节点都可以用 st

文档评论(0)

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

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

1亿VIP精品文档

相关文档