C++大学基础教程第六章.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文档。上传文档
查看更多
* * 6.6.1 动态内存的申请和释放 运算符delete释放动态内存 delete运算符使用格式: delete 指针名; delete p ; new 与delete 应该成对出现 * * 6.6.2 动态数组空间的申请和释放 申请动态数组要加上数组的大小: 一维: new 类型名[常量表达式] ; 注意:动态申请数组空间时,不可以对数组进行初始化 二维: int (*pi_marray)[4]; pi_marray = new int[3][4]; 释放动态数组空间都用相同的表达式: delete []指针名; * * 6.6.3 内存泄漏和指针悬挂 内存泄漏 动态申请的内存空间,没有正常释放,但也不能继续使用的情况。如: char *ch1; ch1 = new char(A); char *ch2 = new char; ch1=ch2; 原来为ch1所申请的存放字符A的空间就不能再使用了,产生了内存泄漏 * * 6.6.3 内存泄漏和指针悬挂 指针指向一个已经释放的空间,即指针悬挂 char *ch1, *ch2; ch1 = new char; ch2 = ch1; *ch2 = B; delete ch1; 指针ch2指向了一个已经释放的地址空间---指针悬挂 用delete ch2;语句来释放ch2所指向的空间,会出现运行错误 * * 6.7 引用概念 * * 6.7 引用概念 引用(Reference)是C++中新引入的概念,是C语言中不存在的数据类型 引用是变量或者其他编程实体(如对象)的别名 因此引用不可以单独定义 如图6.4(a):变量A在内存中有自己的地址,而A的引用B实际上就是变量A,只是A的另外一个名字 * * 6.7.1 引用的声明和使用 引用通过运算符来定义: 类型名 引用名 = 变量名; 变量名必须已经定义 和引用的类型必须相同 int someInt; int refInt = someInt; 必须注意:引用必须在声明的时候就完成初始化,不可以先声明引用,然后再用另一个语句对它初始化。 * * 改进C中函数的形参定义为指针型参数时所带来的不安全性 int add( int *x, int *y ) { *x=*x+*y; return *x; } int add( int x, int y ) { x = x+y; return x; } 改为 * * 6.7.1 引用的声明和使用 引用的特点: 引用不能独立存在,它只是其他变量的别名 引用必须在声明的同时初始化 引用一旦定义,引用关系就不可以更改 B是A的引用,就不可能是其他变量的引用 引用的类型就是相关的变量的类型,引用的使用和变量的使用相同 * * 例6.22 引用的使用。观察以下程序的结果。 void main() { int intA=10; int refA=intA; cout“引用的值和 相关变量值相同:refA=refAendl; refA=5; cout“引用的变化,则相关变量也变化:intA=intAendl; cout“引用的地址和相关变量地址相同:intA的地址=intAendl; cout“引用的地址和相关变量地址相同:refA的地址=refAendl; } 引用的值和相关变量值相同:refA=10 引用的变化,则相关变量也变化:intA=5 引用的地址和相关变量地址相同:intA的地址=0x0012FF7C 引用的地址和相关变量地址相同:refA的地址=0x0012FF7C * * 例6.23 指针的引用。 void main() { int intA=10,intB=20; int *pti=intA; int *refi=pti; cout“指针的引用可以访问指针所指的变 量:*refi=*refiendl; cout指针变量原来的值:pti=ptiendl; refi=intB; cout“引用的变化,则相关指针也变化:pti=ptiendl; cout指针所指的变量值也发生变化:*pti=*ptiendl; } 指针的引用可以访问指针所指的变量:*refi=10 指针变量原来的值:pti=0x0012FF7C 引用的变化,则相关指针也变化:pti=0x0012FF78 指针所指的变量值也发生变化:*pti=20 * * 6.7.1 引用的声明和使用 如果不希望通过引用来改变相关的变量的值,可以定义常引用: const 类型名 引用名=变量名; 例如: in

文档评论(0)

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

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

1亿VIP精品文档

相关文档