《CC++程序设计》课件——第5章 指针类型.pptVIP

《CC++程序设计》课件——第5章 指针类型.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共115页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

使用new运算的注意事项new不具备realloc函数的功能由new产生的动态数组不能再分配空间为防止分配失败而出错new运算之后,应当检查指针值p是否为空(NULL)例如:pnode=newnode;if(pnode==NULL)exit(OVER);//处理分配不成功的情况5.3.2new和delete的用法2.delete运算符的用法回收动态变量所占存储空间的格式:delete指针变量名;回收动态数组(一维或多维)所占存储空间的格式:delete[]指针变量名;//注意方括号3.delete用法示例int*ip,*ipa,n=10;int(*parr)[3];//parr是指向一维数组的指针ip=newint; //产生动态变量scanf(%d,n);ipa=newint[n];//产生有n个元素的整型动态数组parr=newint[n][3];//产生n行3列的二维动态数组deleteip; //回收动态变量ip所占存储空间delete[]ipa;//回收一维动态数组ipa所占存储空间delete[]parr;//回收二维动态数组parr所占存储空间例5-17new和delete的用法示意性程序#includestdio.hvoidmain(){int*a,*b,*p,i,n;printf(请输入动态数组的大小,n=);scanf(%d,n);a=newint[n];//产生一个长度为n的整型动态数组afor(i=0;in;i++)*(a+i)=i+1;//填写a的元素值for(p=a,i=0;in;i++)printf(%4d,*p++);//输出数组aprintf(\n);例5-17new和delete的用法示意性程序delete[]a;//回收a所占空间b=newint[n/2];//产生长度为n/2的整型动态数组bfor(i=0;in/2;i++)*(a+i)=10*i+1; //填写b的元素值for(p=b,i=0;in/2;i++)printf(%4d,*p++);//输出数组bprintf(\n);delete[]b;//回收b所占空间}5.3.3*链表简介链表(linkedlist)由相互链接在一起的结点组成的动态存储结构结点通常是结构类型结点含有值域(valuefield)和链域(linkfield)值域用于存储元素值链域用于存储下一结点的地址(对于单向链表)最后一个结点(尾结点)的链域值为空(NULL)表头指针(head)指向第一个结点(头结点)由表头指针找到第一个结点由第一个结点的链域找到第二个结点……以至所有结点5.3.3*链表简介链表的种类很多,这里指简单的单向动态链表链表结点类型的通用定义方式:typedefstruct结点类型名1{元素类型值域名;//以后示例中,元素类型为intstruct结点类型名1*链域名;}结点类型名2,*指向结点的指针类型名;结点类型名1和结点类型名2可以相同,也可以不同例5-18结点类型定义示例typedefstructintnode{intdata; //值域名datastructintnode*next; //链域名next}node,*ptr; //结点类型名node,指针类型名ptrptrhead,p,q; //定义指针类型变量head,p,q链表结点是动态变量,产生方式(调用malloc):指针变量=(指针类型)malloc(sizeof(结点类型));例如:p=(ptr)malloc(sizeof(node));//或p=newnode;指针p指向新产生的结点,结点名为(*p)或p-,(*p).data或p-data引用值域,(*p).next或p-next引用链域回收结点:free(p); //或deletep;head=newnode;//申请第一个结点head-data=12;//填写值域head-next=newnode;//申请第二个结点head-next-data=23;p=head-next;//p指向第二个结点p-next=newnode; //申请第三个结点例5-19构造3个结点链表的程序段(步骤)例5-19构造3个结点链表的程序段(步骤)head=newnode

文档评论(0)

青柠职教 + 关注
实名认证
服务提供商

从业10年,专注职业教育专业建设,实训室建设等。

1亿VIP精品文档

相关文档