- 1、本文档共75页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数组复习—问题 1)什么情况下使用数组? 2)数组里的元素是顺序存放的吗? 3)一维数组如何定义? 4)一维数组的初始化 5)一维数组元素怎么使用 6)一维数组如何输入输出 7)二维数组的使用 4.2指针 为了操作地址!!! 一点忠告! C/C++可以直接操作内存地址。 指针就是为了地址操作而存在的。 指针是复杂又容易出错的。 在不是必须使用指针的场合,不推荐用指针。 我们学习指针不是为了到处用指针,而是在需要用的时候使用。 我们自己写程序的时候,在确保程序实现功能的前提下,代码是越简单越好,而不是技巧越多,越复杂越好! 本节的学习 本节除了动态内存分配,其余所有程序例题,其实都可以不需要指针。 只所以用指针是为了帮助我们理解指针的用法。 本节的学习,一定要了解一点内存的知识。 内存单元的地址 C++各种基本数据类型的长度(字节) 对例4_5的分析:如何获得变量的地址 intArray是数组名,代表的是数组的起始地址,也就是第一个元素的地址。 intArray[i],用下标法访问数组的元素。 intArray[0]是数组的第一个元素,该元素的地址是intArray[0]。 所以intArray, intArray[0],所存放的地址是一样的。 一旦定义了一个数组,数组名存放的就是数组的起始地址,也就是一个地址类型的数据。 在生存期内,整个数组在内存中的所占用的存储空间是不变的,地址是不变的,所以数组名是一个地址类型的常量。 对一维数组的再探讨 一维数组有个关键问题:下标不可以越界。但是如果越界编译器并不能检查出错误。 从地址的角度来考虑这个问题。 对例4_6的分析 通过本例的输出,可以看出数组元素是顺序存储的。 array[5],其实已经不是array数组中的元素的地址了。 增加语句:array[5]=100; 在编译时不会出现错误信息; 运行后得到的错误信息,是操作系统发出的。 对例4_7的分析 通过本例的输出,可以看出多维数组元素是按行存储的。 二维数组在内存中的存储 占据一片连续存储区 int a[4][3] 4.2.1 结束语 这个部分通过3个例子,展示了数据在内存中如何存放,特别强调了数组的存放。 普通变量:用取地址运算符获得地址。 数组:数组名就是数组的起始地址。 那么,地址取出来做什么?刚学过的3个例子中,地址取出来只是做了输出。 问题1:为什么要使用地址? 问题2:如何使用地址? 问题1:为什么要使用地址? 问题2:如何使用地址? 用于存放地址的变量就是指针类型的变量。 对例4_8的分析 通过本例的,学习 定义指针 给指针赋值 使用指针 空指针 指针初始化 int* P_num=0; P_num=num; 先定义指针,再赋值 int* P_num=num; 定义指针同时初始化 习题 P72:选择题3,4 指针变量的算术运算 指针与整数的加减运算 指针p加上或减去n,其意义是指针当前指向位置的前方或后方第n个数据的地址。 这种运算的结果值取决于指针指向的数据类型。 指针加一,减一运算 指向下一个或前一个数据。 例如:y=*p++ 相当于 y=*(p++) 注意: 指针做算术运算 有意义的场合:访问连续数据序列,例如数组。 其他情况不要用,不仅没意义,还容易带来危险操作。 指针变量的关系运算 关系运算 指向相同类型数据的指针之间可以进行各种关系运算。 指向不同数据类型的指针,以及指针与一般整数变量之间的关系运算是无意义的。 指针可以和零之间进行等于或不等于的关系运算。例如:p==0或p!=0,判断是否为空指针 赋值运算 向指针变量赋的值必须是地址常量或变量,不能是普通整数。但可以赋值为整数0,表示空指针。 对例4_9的分析 指针可以和整数进行加减运算,运算规则比较特殊。 指针加减运算的结果与指针类型密切相关。 指针加1的效果是使指针指向下一个完整数据的起始地址。 利用指针的这个特性,通过指针的不断增值,依次顺序访问有序的批量数据。 指针的算术运算 一般来讲,指针的算术运算是和数组的使用相联系的,因为只有在使用数组时,才会得到连续分布的可操作内存空间。 常用的比较运算: 如果两个同类型的指针相等,表示这两个指针是指向同一个地址的。 如果一个指针等于0,表示这个指针是空指针。 习题 P71:选择题2 指向数组元素的指针 声明与赋值 例:int a[10], *pa; pa=a[0]; 或 pa=a; 通过指针引用数组元素 经过上述声明及赋值后: *pa就是a[0],*(pa+1)就是a[1],... ,*(pa+i)就是a[i]. a[i], *(pa+i), *(a+i), pa[i]都是等效的。 不能写 a++,因为a是数组首地址是常量。 为什么用指针处理数组 与后面要学习的动
您可能关注的文档
- 传输层协议和应用.ppt
- 第四章 服务器基础知识.ppt
- 第08篇 C语言的预处理器.ppt
- 第12讲 装配图.ppt
- 超导核磁共振谱仪的原理与应用实验指导书.doc
- 第6章 语义分析和中间代码生成.ppt
- 科技文献检索_第三讲_北京交通大学.pdf
- 图解M-Flash断电也刷BIOS指南.docx
- 中文CorelDRAW 12应用基础教程第2篇.ppt
- 第五章 电池组件-热击穿.pptx
- 2021-2022学年四川省眉山市仁寿县龙正中学高一英语期末试题含解析.docx
- 吉林省长春市八十七中学高二语文月考试卷含解析.docx
- 夏之绝句专业知识讲座.pptx
- 上海教育发展研究院附属中学2020年高一语文月考试题含解析.docx
- 2021年江苏省苏州市吴中区职业高级中学高一语文上学期期末试卷含解析.docx
- 贵州省遵义市桐梓县第一中学2020-2021学年高三地理期末试卷含解析.docx
- 高寒地区基于BRT构架下公交专用道路断面结构的研究.docx
- 四川省绵阳市剑阁七一中学2021-2022学年高一语文月考试卷含解析.docx
- 2022年山东省济南市【统招专升本】计算机测试卷(含答案).docx
- 江苏省徐州市体育中学高一语文上学期期末试卷含解析.docx
文档评论(0)