数组、指针与字符串.ppt_第1页
数组、指针与字符串.ppt_第2页
数组、指针与字符串.ppt_第3页
数组、指针与字符串.ppt_第4页
数组、指针与字符串.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+面向对象程序设计第四章数组、指针与字符串,陈春丽CCL,第四章数组、指针与字符串,4.1数组4.2指针4.3动态内存分配4.4深拷贝与浅拷贝4.5字符串,4.1数组,数组是具有一定顺序关系的若干相同类型变量的集合体,数组属于构造类型1)数组的长度是固定的2)数组元素在内存中顺次存放,它们的地址是连续的3)数组名是数组首元素的内存地址4)数组名是一个常量,不能被赋值一维数组的声明类型说明符数组名常量表达式;例如:inta10;表示整型数组a有10个元素a0.a9引用必须先声明,后使用。只能逐个引用数组元素,而不能一次引用整个数组。例如:a0=a5+a7-a2*3,例4.1一维数组的声明与引用,#includeusingnamespacestd;intmain()intA10,B10;inti;for(i=0;i10;i+)Ai=i*2-1;B10-i-1=Ai;,for(i=0;i10;i+)coutAi=Ai;coutBi=Biendl;,二维数组的声明及引用,声明类型说明符数组名常量表达式常量表达式;例如:floata34;,存储顺序:按行存放,上例中数组a的存储顺序为:,引用例如:b12=a23/2(下标不要越界),数组作为函数参数,1)数组元素作实参,与单个变量一样2)数组名作参数,形、实参数都应是数组名,类型要一样,传送的是数组首地址对形参数组的改变会直接影响到实参数组例4-2:使用数组名作为函数参数定义一个函数,计算矩阵中每一行的元素之和,将和直接存放在每行的第一个元素中主函数测试,#includeusingnamespacestd;voidRowSum(intA4,intnrow)intsum;for(inti=0;inrow;i+)sum=0;for(intj=0;j4;j+)sum+=Aij;coutSumofrowiissumendl;Ai0=sum;intmain()intTable34=1,2,3,4,2,3,4,5,3,4,5,6;for(inti=0;i3;i+)for(intj=0;j4;j+)coutTableijendl;RowSum(Table,3);for(inti=0;i3;i+)coutTablei0;,运行结果:123423453456Sumofrow0is10Sumofrow1is14Sumofrow2is18101418,对象数组,声明:类名数组名元素个数;访问形式:数组名下标.成员名对象数组初始化数组中每一个元素对象被创建时,系统都会调用类构造函数初始化该对象(同样,当数组中每一个对象被删除时,系统都要调用一次析构函数)通过初始化列表赋值。例:PointA2=Point(1,2),Point(3,4);如果没有为数组元素指定显式初始值,数组元素便使用默认值初始化(调用默认构造函数),例4-3对象数组应用举例,/Point.hclassPointpublic:Point();Point(intxx,intyy);Point();intGetX()returnX;intGetY()returnY;voidDisplay();voidMove(intx,inty);private:intX,Y;,/Point.cpp#includeusingnamespacestd;#includePoint.hPoint:Point()X=Y=0;coutDefaultConstructor.endl;Point:Point(intxx,intyy)X=xx;Y=yy;coutConstructorcalled.endl;Point:Point()coutDestructorcalled.endl;voidPoint:Move(intx,inty)X=x;Y=y;voidPoint:Display()cout(x,y);,/prjPoint.cpp#includeusingnamespacestd;#includePoint.hintmain()coutEnteringmain.endl;PointA2;for(inti=0;i2;i+)Ai.Move(i+10,i+20);Ai.Display();coutendl;coutExitingmain.ai;coutendl;for(i=0;i10;i+)coutai;coutendl;for(i=0;i10;i+)coutai;coutendl;for(p=a;p(a+10);p+)cout*p;,指针数组,数组的元素是指针型例:Point*pa2;数组pa由pa0,pa1两个指针组成例:利用指针数组存放单位矩阵,#includeusingnamespacestd;intmain()intline1=1,0,0;intline2=0,1,0;intline3=0,0,1;int*p_line3;p_line0=line1;p_line1=line2;p_line2=line3;,/输出单位矩阵coutMatrixtest:endl;for(inti=0;i3;i+)/对指针数组元素循环for(intj=0;j3;j+)/对矩阵每一行循环coutp_lineij;coutsize;array=newintsize;/数组大小可以是变量deletearray;/释放堆内存,数组的创建与删除,也可以创建多维数组,其中第一维可以是变量,其他维数必须是常量introw=3;constintcol=5;double(*ptr)col=newdoublerowcol;deleteptr;,#include#includeusingnamespacestd;intmain()float(*cp)5;cp=newfloat45;inti,j;for(i=0;i4;i+)for(j=0;j5;j+)*(*(cp+i)+j)=i*10+j*1;for(i=0;i4;i+)for(j=0;j5;j+)coutcpij;coutendl;coutendl;,运行结果为:01234101112131420212223243031323334,#includePoint.hintmain()coutStepOne:endl;Point*Ptr1=newPoint;deletePtr1;coutStepTwo:endl;Ptr1=newPoint(1,2);deletePtr1;return0;,#includeusingnamespacestd;classPointpublic:Point()X=Y=0;coutD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论