- 1、本文档共166页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例: int i=0; int ir=i; //定义引用ir作为i的别名 ir=2; //形式上向ir赋值,实际上是向i 赋值,等同于i=2; int *p=ir; //形式上取ir的地址,实际上是取i 的地址, 等同于int *p=ir; 可施加于引用的操作取决于引用所代表的对象的数据类型。 引用所代表的对象不同,定义引用的格式也不同 int a[10],*p=a; int ra1=a[6]; //ra1代表数组元素a[6] int(ra2)[10]=a; //ra2代表数组a int *rp1=p //rp1代表指针变量p int rp2=*p; //rp2代表p所指向的那个对象,即数组元素a[0] 设计函数swap,其功能是交换两个变量的值。要求变量的地址通过指针参数传递。 #include iostream.h void swap(int *a,int *b){ int c=*a; *a=*b; *b=c; } void main( ){ int x=3,y=5; swap(x,y); //与指针形参对应的实参必须是指针值 coutendlx‘’y; } 动态空间管理 C++中提供了在程序运行时动态地取得和释放空间的机制,这样的空间叫动态空间,也叫自由空间。 申请动态空间——new 释放动态空间——delete 非数组动态空间 申请动态空间的格式: new 类型说明〖(表达式) 〗 如果申请空间成功,返回一个指向该内存空间的指针,指针类型由类型说明确定,括号内的表达式是对于申请到的内存的初始化。 释放空间的格式: delete 指针表达式〖,指针表达式〗 例: int *p1,*p2; p1=new int(5); //申请整型空间,并初始化为5 p2=new (int *); //申请一整型指针空间(括号可省) *p2=new int(7); //*p2指向一整型空间,初始化为7 coutendl*p1‘ ’**p2; delete p1,*p2,p2; //释放指针p1、*p2及p2所指向的空间 数组动态空间 申请数组动态空间 new 类型说明[元素个数] new 类型说明[行数][列数] 对于申请的数组空间,无法初始化 释放数组动态空间 delete []指针表达式〖, []指针表达式〗 例: int *ap=new int[10]; //指针ap指向申请到的具有10个元素的整型数组空间。 double (*Matrix)[20]=new double[20][20];//指针Matrix指向申请到的双精度实型二维数组。 delete []ap,[]Matrix;//释放指针ap和指针Matrix指向的数组空间 * ??char * ?! * 纵向跳格和横向跳格 * ???? * ?? * 所以有什么用呢? * ??! #include iostream using namespace std; void swap(int *a,int *b); //函数声明 int main() {int a = 10; //定义全局变量a,值为10。a是a变量的地址。 int b = 20; //定义全局变量b,值为20。b是b变量的地址。 cout交换之前的值:a=a ,b=bendl; func(a,b); cout交换之后的值:a=a ,b=bendl; system(pause); } void swap(int *a,int *b) { int temp=*a; *a=*b; *b=temp;} 传址调用的例子(请思考输出结果) 说明: 一、变量与地址 例:int a; 定义一个变量,系统给它分配4个字节的内存空间,a则是它的第一个字节的地址。可以用: coutsizeof(int) a;查看。 二、指针变量 int *a;则定义一个指针变量a,其实a就是一个地址的起始值。而*a则是以a为起始值的地址中的内容。但是并未指定它具体的地址。所以下面的代码出错。 int *a; //定义了一个指针变量a,但没有指定它指向哪个地址。 *a=10; //10不知道放在什么地方。所以出错。 三、体会一下下面的代码: int * pd, d; pd=d; //指针指向变量d, *pd=99; //*pd是pd所指向的存储空间,即变量d, cout*pd‘ ‘d; //输出99 99 传址调用例子的分析 func(a,b);将全局变量a与b的地址传给局部指针变量a和b,共用一个地址。 tem
您可能关注的文档
- SCR催化剂(脱销钛白粉)实用总结分析.ppt
- SD8000--基础重点.ppt
- SDC系列智能型除湿装置说明书重点.doc
- IBEACON移动书店项目重点.ppt
- IBT听力---lecture词汇重点.doc
- seafoodknown重点.doc
- IB自选模块第二章第二节重点.ppt
- ICD-10各章节思考题分析.doc
- IChOLand07-04重点.doc
- SectionA1八年级下册第二单元课件重点.ppt
- 注册验船师高频真题题库2025.docx
- 注册验船师高频题库带解析2025.docx
- 注册验船师考试必备资料2025.docx
- 注册验船师精选题库带分析2025.docx
- 注册验船师考前冲刺必刷题附答案2025.docx
- 新高考生物二轮复习讲练测第10讲 人体的稳态与免疫调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第13讲 生物技术与工程(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第7讲 遗传的基本规律与伴性遗传(检测)(原卷版) .docx
- 新高考生物二轮复习讲练测第13讲 生物技术与工程(检测)(原卷版).docx
文档评论(0)