欢迎来到天天文库
浏览记录
ID:58678978
大小:464.50 KB
页数:44页
时间:2020-10-05
《第六章 数组、指针与字符串ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++语言程序设计第三单元动态内存分配与字符串第六章数组、指针、字符串1教学要求:1.掌握数组的概念和使用;2.掌握指针的概念、运算、指针数组和对象指针;3.掌握动态内存分配的应用;4.掌握字符串的应用;教学重点:1.数组的声明、存储,数组作为参数和对象数组2.指针的声明、运算,处理数组元素,对象指针3.new运算和delete运算教学难点:1.指针的概念2.指针作为函数参数,处理数组元素,对象指针2第六章数组指针与字符串教学目的:通过本章的学习,学生应掌握使用数组;掌握字符串数据的组织和处理;掌握指针的概念和使用方法;掌握派生类的声明;继承中的访
2、问控制。教学重点:派生类的声明;继承中的访问控制。教学难点:不同继承方式下对基类成员的访问控制教学手段:电子教案3本章主要内容数组指针动态存储分配指针与数组指针与函数字符串4§6.3动态内存分配代码区静态数据区栈(stack)动态数据区堆(heap)5§6.3动态申请内存操作符newnew类型名T(初值列表)功能:在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值。结果值:成功:T类型的指针,指向新分配的内存。失败:0(NULL)int*point;point=newint(2);注意:堆对象的生命周期是整个程序
3、生命期Point*ptr;ptr=newPoint;6如果建立的对象是某一个类的实例对象,就是要根据实际情况调用该类的构造函数。释放内存操作符deletedelete指针名功能:释放指针P所指向的内存。P必须是new操作的返回值。动态存储分配7例动态存储分配举例classPoint{public:Point(){X=Y=0; cout<<“Defaultconstructorcall.”<4、){cout<<“Destructorcall.”<5、uctorcall.StepOne:constructorcall.Destructorcall.10动态内存分配用new创建一维数组new类型名T[下标表达式];下标表达式表示数组元素的个数。动态为数组分配内存时不能指定数组元素的初值。结果值成功:返回指向新分配内存首地址的T类型的指针。失败:返回空指针0(NULL)。11例动态存储分配举例classPoint{public:Point(){X=Y=0; cout<<“Defaultconstructorcall.”<6、Y=yy;cout<<“constructorcall.”<Move7、(5,10);(ptr+1)->Move(15,20);注意:如果是用new建立的数组,用delete删除时必须在指针名前面加“[]”运行结果如下:Defaultconstructorcall.Defaultconstructorcall.Destructorcall.Destructorcall.14指向多维数组的指针和指针变量一、多维数组的地址例:(二维数组为例)设有一个二维数组a,它有三行四列。定义:Staticinta[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};行地址的表示135791118、31517192123a[0]a[1]a[2]===a15数组的指针和指向数组的指针变量一维数组名a[i]:代表第i行的
4、){cout<<“Destructorcall.”<5、uctorcall.StepOne:constructorcall.Destructorcall.10动态内存分配用new创建一维数组new类型名T[下标表达式];下标表达式表示数组元素的个数。动态为数组分配内存时不能指定数组元素的初值。结果值成功:返回指向新分配内存首地址的T类型的指针。失败:返回空指针0(NULL)。11例动态存储分配举例classPoint{public:Point(){X=Y=0; cout<<“Defaultconstructorcall.”<6、Y=yy;cout<<“constructorcall.”<Move7、(5,10);(ptr+1)->Move(15,20);注意:如果是用new建立的数组,用delete删除时必须在指针名前面加“[]”运行结果如下:Defaultconstructorcall.Defaultconstructorcall.Destructorcall.Destructorcall.14指向多维数组的指针和指针变量一、多维数组的地址例:(二维数组为例)设有一个二维数组a,它有三行四列。定义:Staticinta[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};行地址的表示135791118、31517192123a[0]a[1]a[2]===a15数组的指针和指向数组的指针变量一维数组名a[i]:代表第i行的
5、uctorcall.StepOne:constructorcall.Destructorcall.10动态内存分配用new创建一维数组new类型名T[下标表达式];下标表达式表示数组元素的个数。动态为数组分配内存时不能指定数组元素的初值。结果值成功:返回指向新分配内存首地址的T类型的指针。失败:返回空指针0(NULL)。11例动态存储分配举例classPoint{public:Point(){X=Y=0; cout<<“Defaultconstructorcall.”<6、Y=yy;cout<<“constructorcall.”<Move7、(5,10);(ptr+1)->Move(15,20);注意:如果是用new建立的数组,用delete删除时必须在指针名前面加“[]”运行结果如下:Defaultconstructorcall.Defaultconstructorcall.Destructorcall.Destructorcall.14指向多维数组的指针和指针变量一、多维数组的地址例:(二维数组为例)设有一个二维数组a,它有三行四列。定义:Staticinta[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};行地址的表示135791118、31517192123a[0]a[1]a[2]===a15数组的指针和指向数组的指针变量一维数组名a[i]:代表第i行的
6、Y=yy;cout<<“constructorcall.”<Move
7、(5,10);(ptr+1)->Move(15,20);注意:如果是用new建立的数组,用delete删除时必须在指针名前面加“[]”运行结果如下:Defaultconstructorcall.Defaultconstructorcall.Destructorcall.Destructorcall.14指向多维数组的指针和指针变量一、多维数组的地址例:(二维数组为例)设有一个二维数组a,它有三行四列。定义:Staticinta[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};行地址的表示13579111
8、31517192123a[0]a[1]a[2]===a15数组的指针和指向数组的指针变量一维数组名a[i]:代表第i行的
此文档下载收益归作者所有