语言知识点课件

上传人:我*** 文档编号:139813457 上传时间:2020-07-24 格式:PPT 页数:38 大小:269KB
返回 下载 相关 举报
语言知识点课件_第1页
第1页 / 共38页
语言知识点课件_第2页
第2页 / 共38页
语言知识点课件_第3页
第3页 / 共38页
语言知识点课件_第4页
第4页 / 共38页
语言知识点课件_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《语言知识点课件》由会员分享,可在线阅读,更多相关《语言知识点课件(38页珍藏版)》请在金锄头文库上搜索。

1、CH6 : Array and Pointer,CH6 : Array and Pointer,6.1数组 1. 定义数组 2. 访问数组元素 3. 多维数组 4. 数组作为函数参数 5. 对象数组 6.2 指针 1. 定义指针 2. 使用指针间接访问 3. 数组与指针 4. 函数与指针 5. 对象与指针 6. 动态内存管理 6.3 向量std:vector,6.1数组,1. 定义数组 2. 访问数组元素 3. 多维数组 4. 数组作为函数参数 5. 对象数组,1. 定义数组,(1) 定义数组(Array) 语法:type-name array-name const-expression ;

2、例:int a5; (2) 初始化 int a5 = 1,2,3,4,5; int a5 = 0; int a = 1,2,3;,2. 访问数组元素,(1) 下标 语法:array-name index 例:a0 ai (2) 下标越界错误 超出下标范围访问数组元素。 “边界值验证法”,3. 多维数组,(1) 多维数组即是“元素是数组”的数组。 可以用一维数组来理解多维数组。 (2) 存储顺序 int a34;,4. 数组作为函数参数,(1) 数组作为函数参数 int sum ( int a, int n ) int s = 0; for ( int i=0; in; +i ) s += ai

3、; return s; ,4. 数组作为函数参数,数组本身不保存元素个数的信息,所以一般同时使用一个整型参数表示数组中的元素个数。 int sum ( int a, int n ) 数组作为函数参数时,传递的是首元素地址而不是整个数组中的数据。 int sum ( int a5, int n )等价于 int sum ( int *a, int n )等价于 int sum ( int a, int n ),4. 数组作为函数参数,(2) 注意类型匹配 int sum2d ( int a3, int n ); int main() int a34 = ; int b43 = ; sum2d (

4、 a, 3 ); /编译错误 sum2d ( b, 4 ); /OK ,5. 对象数组,数组元素是对象 Cat a3 = Cat(a), Cat(b), Cat(c) ; 注意这里的初始化方法。 调用成员函数 a0.eat(5); ai.talk();,5. 对象数组,数组与缺省构造函数 如果类没有缺省(无参数)构造函数,则在定义数组时必须进行初始化。 Cat a3 = Cat(a), Cat(b), Cat(c) ; 否则会因为无法创建对象而出现编译错误。 Cat b2; /编译错误 如果类有缺省(无参数)构造函数,如:Cat:Cat(),就可以不提供数组的初始化。 Cat b2; /OK,

5、调用Cat:Cat()两次。,6.2 指针,1. 定义指针 2. 使用指针间接访问 3. 数组与指针 4. 函数与指针 5. 对象与指针 6. 动态内存管理,1. 定义指针,(1)存储单元的地址 每个内存单元都有唯一的地址。 一个变量可能占用多个内存单元,则其最低地址为该变量的地址。 用指针存储地址。 (2)定义指针 语法:type-name *pointer ; 例:int *p; 定义指针后立即初始化,可以防止“野指针”。 例:int *p = ,int a;,p,1. 定义指针,(3)空指针(null pointer) 空指针 NULL 即 0。 常用于表示指针不指向任何有效的存储单元。

6、,2. 使用指针间接访问,通过指针可以间接访问存储在该地址的数据。 int a = 3; int *p = / a=4,3. 数组与指针,(1)指针指向数组中的元素 (2)指针运算 (3)数组名作为固定指向首元素的指针 (4)指针作为数组元素 (5)指向数组的指针 (6)二维数组与指针,(1)指针指向数组中的元素,int a5 = 1,2,3,4,5; int *p; p = ,(2)指针运算,根据数组存储的连续性,有,(3)数组名作为固定指向首元素的指针,数组名a看作固定指向数组首元素a0的指针 int a5; a 就是 或 int *(a5);,(5)指向数组的指针,指向数组的指针 int

7、 (*p)5; int (*q)6; 问赋值语句 p = q; 是否正确?,(6)二维数组与指针,数组名a看作固定指向数组首元素a0的指针 把二维数组看作一维数组? 把二维数组看作一维数组,每个元素都是数组。,int a35; a 就是 ,(3)指向函数的指针,函数也有地址。 函数代码在内存中的首地址。 指向该函数的指针 设有函数 void f(); 则定义指向该函数的指针,为 void (*p)(); 让指针指向函数f p = f;,5. 对象与指针,(1)指向对象的指针 (2)this指针 (3)指向非静态成员的指针(了解) (4)指向静态成员的指针(了解),(1)指向对象的指针,Cat

8、c(“MaoMi”); Cat *p = ,(2)this指针,表示成员函数正在操作的对象的地址。 this-成员名用于访问成员 *this表示正在操作的对象,6. 动态内存管理,(1)C语言 (2)new运算符 (3)delete运算符 (4)搭配规则 (5)常见问题,(1)C语言,malloc(size) 分配内存,不初始化 calloc(n,size)分配连续的n个size字节大小的内存,初始化为0。 realloc(p,size) 复制内存 free(p) 所在头文件或,(2)new运算符,分配内存,必要时自动调用构造函数。 new type 例如:int *p = new int; new type(initializer) 例如:Cat *p = new Cat(“MaoMi”); new typen int *p = new int10; 自动调用构造函数(与malloc()的区别)。,(3)delete运算符,释放内存,必要时调用析构函数。 delete p; delete p; 自动调用析构函数。,(4)搭配规则,(5)常见问题,内存泄漏 重复释放已经释放的内存 使用已经释放的内存,6.3 向量std:vector,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号