




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,课件制作:C/C+教材编写组哈尔滨理工大学计算中心,基于计算思维,2,第1章初识C/C+程序设计语言,第2章数据类型、运算符与表达式,第3章顺序结构程序设计,第5章循环结构程序设计,第6章数组,第7章字符串,第8章指针,总复习,第4章选择结构程序设计,课程概述,第9章函数,第11章类与对象自定义数据类型,第12章继承与多态自定义数据类型,第13章C+输入/输出流类库,第14章异常处理,第15章图形界面编程简介,第10章自定义数据类型,第8章指针,3,指针,第8章,掌握数组的局限和指针的用途掌握指针变量的定义掌握指针变量和地址常量的关系掌握指针变量和数组的应用,4,8.1案例剖析,实例:字符数组的输入、存储和输出,问题的提出编写一个程序,利用整型指针逐一输出整型数组的每个元素。,5,8.1案例剖析,算法及程序设计分析分别定义数组和指针;将指针指向数组起始位置;使用指针变量输出指向的数组元素;移动指针,指向下一个数组元素;继续输出指针变量指向的数组元素。,6,8.1案例剖析,源程序及说明#includeintmain()inti,*p;inta10=1,2,3,4,5,6,7,8,9,10;p=a;for(i=0;i10;i+)cout,定义指针变量,指针指向数组头部,指针向后移动,7,8.1案例剖析,指针与数组内存关系示意图,8,8.2内存空间的访问方式,程序时,按照以下方式表示运行时的首地址:变量的地址可以使用地址运算符intmain()inta=10;doubleb=3.14;intd10=1,2,3,4,5,6,7,8,9,10;coutaddressofa:=、p,即指针q指向的地址在指针p指向的地址后面。,8.4用指针处理数组,15,指针变量的运算,指针变量的下标运算C+也提供了指针变量的下标运算符,使指针访问可以象数组一样按下标访问。例如:inta6=1,2,3,4,5,6;int*p;p=那么p0表示指针p当前指向的数组元素值,相当于a2+0,p1表示指针p当前指向的数组元素值,相当于a2+1,依此类推。,8.4用指针处理数组,16,分配存储空间,动态内存分配的格式为:指针变量=new数据类型空间个数;例如:int*p,n;cinn;p=newintn;如果内存未分配成功,new的返回值为0,即指针变量的值为NULL,说明系统中无足够的空闲内存。所以可以通过指针变量的值判断程序是继续运行还是重新分配存储空间。,8.5动态存储分配内存空间,17,释放存储空间,释放数组空间的格式为:delete指针变量;或delete指针变量;例如申请一个整型变量空间,再释放的语句为:int*p=newint;deletep;申请含有10个整型数组元素的空间,再释放的语句为:int*q=newint10;deleteq,8.5动态存储分配内存空间,18,例8.3将数组的元素依次穿插合并为一个数组,源程序8.3#include#includeusingnamespacestd;intmain()int*a,*b,*c;intn,i;cinn;a=newintn;for(i=0;i*(a+i);b=newintn;for(i=0;i*(b+i);,8.5动态存储分配内存空间,19,例8.3将数组的元素依次穿插合并为一个数组,源程序8.3c=newint2*n;for(i=0;in;i+)*(c+i*2)=*(a+i);*(c+i*2+1)=*(b+i);for(i=0;in*2;i+)cout(*(c+i);coutendl;return0;,8.5动态存储分配内存空间,20,例8.4用指针将字符串内容反向排列并输出,源程序8.4#includeusingnamespacestd;intmain()charstr=abcdefghij;char*p;chartemp;intj,len;len=strlen(str);for(p=str;(p-str)len/2;p+)temp=*p;*p=*(str+len-(p-str)-1);*(str+len-(p-str)-1)=temp;for(j=0;jlen;j+)coutstrjendl;return0;,8.6用指针处理字符串,每次循环后向后移动指针位置,21,指针数组,定义指针数组的语法为:类型名*指针数组名元素个数;例如:int*p5;表示定义了一个可以存储5个整型数据地址的指针数组。定义指针数组时也可以直接对指针数组赋初值。例如:inta,b,c;int*p3=,8.7指针数组和二维指针,22,例8.5用指针数组元素对三个整型数组分别访问,源程序8.5#includeusingnamespacestd;intmain()inta3=1,2,3;intb3=4,5,6;intc3=7,8,9;inti,j,*p3=a,b,c;for(i=0;i3;i+)for(j=0;j3;j+)cout*pi”;pi+;coutendl;return0;,8.7指针数组和二维指针,23,二级指针,定义二维指针的格式是:类型名*指针名;例如:inta;int*p=,8.7指针数组和二维指针,24,例8.6用二级指针访问指针数组元素所指向的数据,源程序8.6#includeusingnamespacestd;intmain()inta3=1,2,3;intb3=4,5,6;intc3=7,8,9;inti,j,*p3=a,b,c;int*pp=p;for(i=0;i3;i+)for(j=0;j3;j+)cout*pp”;(*pp)+;coutselect;cin.sync();,30,8.9综合案例:学生成绩管理,源程序,switch(select)case0:cout程序结束。endl;exit(0);case1:for(i=0;in;i+)cout“请输入”i+1“号学生的姓名和成绩用空格分隔信息:who;a=0;c=n-1;b=(a+c)/2;,按姓名查询学生的成绩,34,8.9综合案例:学生成绩管理,源程序,while(strcmp(who,pb)!=0,35,8.9综合案例:学生成绩管理,源程序,elsecoutpb;coutscor
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新学未小学教材讲解
- 手术室高危药品管理
- 天气预报项目讲解
- 现代化医院护理服务体系建设
- 秦岭生态环保汇报
- 文化相关条例解读
- 小学宣讲活动汇报
- 外研版三起课程讲解
- 眼科医院营销答辩策略规划
- 现代生殖技术发展与应用
- 保安员知识考试题库及答案
- 农村土地确权课件
- (高清版)T∕CES 243-2023 《构网型储能系统并网技术规范》
- 面试性格测试表
- XXX加油站风险分级管控台账
- 特种设备安全管理-使用知识
- H35-462(5G中级)认证考试题库(附答案)
- HY/T 122-2009海洋倾倒区选划技术导则
- GB/T 19666-2019阻燃和耐火电线电缆或光缆通则
- 制造执行系统的功能与实践最新ppt课件(完整版)
- xx医院卫生院卫生应急(医疗救援)物资储备清单
评论
0/150
提交评论