- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++语言程序设计5.ppt
C++语言程序设计 第五讲 本讲主要内容 数组 指针 数组(1/12) 什么是数组? 数组是一组相同类型的对象 这些对象具有相同的变量名 数组中的对象是线性关系的 为区分数组中的对象,用下述格式: 变量名[下标] 下标从0开始 数组(2/12) 一维数组 数组声明语法:类型 数组名[常量表达式]; 例:double distance[100]; 例:Point map[100]; 数组元素使用语法:变量名[下标] 只能逐个引用数组元素,而不能一次引用整个数组的元素! 数组(3/12) 数组的初始化: 全部初始化: 例:int array[5] = {1, 2, 3, 4, 5} 部分初始化: 例:int array[5] = {1, 2, 3} 初始化时省略数组长度: 例:int array[] = {1, 2, 3, 4, 5} 思考 本例中数组如何初始化? 未初始化的数组元素初值是多少? intArray[i] 和 intArray 有何区别? 数组的下标越界会怎样? 为什么数组的下标要从0开始? 数组(4/12) 怎么在内存中存放一维数组? 用连续的空间存放 为每个数组元素分配同样大小的空间 数组名就是数组中第一个元素所占内存空间的起始地址 一维数组内存分配示例 例:short a[10] = {1, 2, 3, 4, 5}的内存分配 数组(5/12) 数组元素的内存寻址: 第一个元素的地址:数组起始地址 第二个元素的地址:数组起始地址+1个元素的长度 第三个元素的地址:数组起始地址+2个元素的长度 第i个元素的地址:数组起始地址+(i-1)个元素的长度 数组(6/12) 数组元素的内存寻址公式: 第i个元素的地址 = 数组起始地址+(i-1)个元素的长度 i-1就是下标! 即:对于数组 类型 Array[长度],有: Array[i] = Array + i*sizeof(类型) 数组(7/12) 什么是多维数组? []不止一个 []个数决定维数 最常使用的多维数组:矩阵 例:double distance[100][100]; 例:Student myStudent[7][30]; 数组(8/12) 多维数组的初始化: 全部初始化,不分行: 例:int array[2][3] = {1, 2, 3, 4, 5, 6} 全部初始化,分行: 例:int array[2][2] = {{1, 2},{3, 4}} 部分初始化: 例:int array[2][3] = {{1,},{4,5}} 初始化时省略第一维数组长度: 例:int array[][3] = {{1, 2, 3},{4, 5, 6}} 思考 本例中如何访问二维数组的数组元素? 外圈循环一定要代表行吗? 二维数组内存分配示例 例:short a[4][3] = {1, 2, 3, 4, 5}的内存分配 数组(9/12) 数组元素的内存寻址: 思想:第i行第j列的元素之前共有i-1行元素(满行)和j-1个元素 数组(10/12) 数组元素的内存寻址公式: 对于数组 类型 Array[行数][列数],有: Array[i][j] = Array + (i*列数+j)*sizeof(类型) 数组(11/12) 数组作为函数参数: 单个数组元素在函数参数中的使用和普通变量没有区别 如果希望将整个数组作为参数传递,只需将数组名传递 思考 本例中的参数是值传递还是引用传递? 在函数体内怎么能知道数组形参的长度? 总结 用数组名作参数传递时,传递的是地址 因此,此处的形参是实参的引用 通常在传递数组时,会将数组的长度也作为参数传递过去! 思考 数组能作为函数的返回值返回吗? 如果能,返回类型用形如int[]还是int? 总结 通常,我们不会用数组作为某函数的返回值。 因为:如果该数组是被传递进函数的,则它可以被直接修改,不需返回 如果该数组是函数体内声明的,则通常用指针将其返回(但要小心!) 数组(12/12) 对象数组: 对对象数组的使用和对普通数组的使用没有任何区别 访问数组中对象的成员方式: 数组名[下标].成员名 指针(1/16) 什么是指针? 指针是一种数据类型 所有该类型的变量的取值都是地址 指针是某内存单元的间接引用 指针本身也要占据内存空间 所有的指针占的内存空间大小相同,都是机器的地址长度 指针(2/16) 指针声明: 语法:类型 * 变量名 同引用一样,*只对右侧的操作数有效 例:int * p, q; 指针(3/16) 指针运算: *运算: 作用:解引用 即:取当前指针存放的地址中的值 运算: 作用:取地址 即:取它右侧操作数的地址 思考 解释下列语句: int a; int* p; cout p; cout *p; cout
您可能关注的文档
- 中考出错字音.ppt
- SOCIAL, ETHICAL, AND LEGAL - Iowa State University社会,伦理,法律-爱荷华州立大学.ppt
- Social Data社交数据.ppt
- ILO and international labour migration - trainingitciloit国际劳工组织和国际劳工迁移trainingitciloit.ppt
- 国际经济合作(修改).ppt
- 11 调研报告【应用文书例稿】.ppt
- ...消费者路演之网络媒体宣传推广方案_营销活动策划_....ppt
- 营业部经理成功之道【管理经典】.ppt
- 2012年《高考风向标》高考文科数学一轮复习 第九章 第3讲 等比数列 :精品课件.ppt
- Satisfying labour demand through migration in Lithuania满足劳动力的需求,通过在立陶宛的移民.ppt
文档评论(0)