




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章指针和数组,哈尔滨工业大学计算机科学与技术学院苏小红sxh,本章学习内容,指针与一维数组间的关系,指针与二维数组间的关系向函数传递一维数组和二维数组指针数组,命令行参数动态数组,动态内存分配,11.1指针和一维数组间的关系,inta4=1,2,3,4;,0 x0037b000,a0,0 x0037b004,0 x0037b008,0 x0037b00B,a,.,.,1,int*pa=a;,pa,int*pa=,2,3,4,a1,a2,a3,数组名是一个常量指针不能修改该指针的指向,指针可当数组名使用,11.1指针和一维数组间的关系,inta4=1,2,3,4;,0 x0037b000,a0,0 x0037b004,0 x0037b008,0 x0037b00B,a,.,.,1,int*pa=a;,pa,int*pa=,2,3,4,a1,a2,a3,数组元素的等价引用形式ai*(a+i)pai*(pa+i),a+1,*(a+1),pa0,*(pa+2),pa+2,*pa,11.1指针和一维数组间的关系,inta4=1,2,3,4;,0 x0037b000,a0,0 x0037b004,0 x0037b008,0 x0037b00B,a,.,.,1,p,2,3,4,a1,a2,a3,for(i=0;i4;i+)scanf(%d,for(p=a;p(a+4);p+)scanf(%d,p);for(p=a;p(a+4);p+)printf(%d,*p);,*p,*p,a+4,11.1指针和一维数组间的关系,【例11.1】演示数组元素的引用方法,11.1指针和一维数组间的关系,【例11.1】演示数组元素的引用方法,11.1指针和一维数组间的关系,【例11.2】演示数组和指针变量作函数参数,被调函数的形参声明为数组类型,用下标法访问数组元素,11.1指针和一维数组间的关系,【例11.2】演示数组和指针变量作函数参数,被调函数的形参声明为指针类型,用指针法访问数组元素,11.1指针和一维数组间的关系,【例11.2】演示数组和指针变量作函数参数,在主函数中这样做没有多大的实际意义,11.2指针和二维数组间的关系,可将二维数组看做一维数组,其每个数组元素又是一个一维数组按行顺序存放所有元素,a0,a1,a0+1,a0+2,a,a+1,11.2指针和二维数组间的关系,shorta23;,a,a+1,a代表二维数组的首地址,第0行的地址,行地址,a+i代表第i行的地址但并非增加i个字节!,a0,a1,*(a+i)即ai代表第i行第0列的地址,列地址,a,a+1,*(a+i)+j即ai+j代表第i行第j列的地址,a,a+1,p=a;/用行地址初始化逐行查找-逐列查找,shorta23;,a,a+1,11.2指针和二维数组间的关系,二维数组的行指针int(*p)3;p=a;/用行地址初始化逐行查找逐列查找,shorta23;,a+1,a,11.2指针和二维数组间的关系,二维数组的行指针int(*p)3;p=a;/用行地址初始化逐行查找-逐列查找for(i=0;im;i+)for(j=0;jn;j+)printf(%d,*(*(p+i)+j);,shorta23;,a,a+1,11.2指针和二维数组间的关系,二维数组的列指针int*p;p=*a;/用列地址初始化逐个查找相对偏移量for(i=0;im;i+)for(j=0;jn;j+)printf(%d,*(p+i*n+j);,shorta23;,*a或a0,pi*n+j,11.2指针和二维数组间的关系,【例11.3】输入一个3行4列的二维数组,然后输出这个二维数组的元素值,11.2指针和二维数组间的关系,【例11.3】输入一个3行4列的二维数组,然后输出这个二维数组的元素值,11.2指针和二维数组间的关系,形参声明为列数已知的二维数组,【例11.3】输入一个3行4列的二维数组,然后输出这个二维数组的元素值,11.2指针和二维数组间的关系,形参声明为指向列数已知的二维数组的行指针,【例11.3】输入一个3行4列的二维数组,然后输出这个二维数组的元素值,11.2指针和二维数组间的关系,形参声明为指向二维数组的列指针,【例11.3】输入一个3行4列的二维数组,然后输出这个二维数组的元素值,11.2指针和二维数组间的关系,指针和数组作函数参数,通过指针或数组参数,使调用者获得修改后的数据通过一个参数把大量的数据送到函数内如果只向内传送数据,就把参数定义为const,防止意外修改数据,也让函数的功能更明确voidPrintArray(constint*p,intn).voidPrintArray(constinta,intn).,指针、数组以及其他的类型混合,基本数据类型int、long、char、short、float、double数组是一种数据类型是从其他类型派生的类型每个元素都有一个类型指针是一种数据类型是从其他类型派生的类型XX类型的指针任何类型都可以作指针或者数组的基类型,11.3指针数组及其应用,用指针作数组的基类型?指针数组(PointerArray)元素均为指针类型数据的数组定义形式为:数据类型*数组名数组长度;例如char*ptr5;,ptr,5,*,char,【例10.4】国名字符串排序二维数组,charnameNMAX_LEN;.for(i=0;in-1;i+)for(j=i+1;jn;j+)if(strcmp(strj,stri)0)strcpy(temp,stri);strcpy(stri,strj);strcpy(strj,temp);,MAX_LEN,N,物理排序,【例11.4】国名字符串排序指针数组,char*ptrN;.for(i=0;in-1;i+)for(j=i+1;j1)printf(Theotherargumentsarefollowing:n);for(i=1;i1)printf(Theotherargumentsarefollowing:n);for(i=1;iargc;i+)printf(%sn,argvi);return0;,Thenumberofcommandlineargumentsis:4Theprogramnameis:echo.exeTheotherargumentsarefollowing:programmingisfun,11.4动态数组11.4.1C程序的内存映像,C程序中变量的内存分配方式从静态存储区分配全局变量和静态变量在栈上创建存放函数参数值、局部变量值等在执行函数调用时,系统在栈上为函数内的局部变量及形参分配内存,函数执行结束时,自动释放这些内存从堆上分配在程序运行期间,用动态内存分配函数来申请的内存都是从堆上分配的,动态内存的生存期由程序员自己来决定,11.4.2动态内存分配函数,Twoprimarymethodsofallocatingmemory:,void*malloc(unsignedintsize);,void*calloc(unsignedintnum,unsignedintsize);,#include#include,void*类型的指针可以指向任意类型的变量,通常强转(Type*)为其他类型,11.4.2动态内存分配函数,Twoprimarymethodsofallocatingmemory:,void*malloc(unsignedintsize);,void*calloc(unsignedintnum,unsignedintsize);,向系统申请大小为size的内存块把首地址返回,若申请不成功则返回NULL,向系统申请num个size大小的内存块把首地址返回,若申请不成功则返回NULL,11.4.2动态内存分配函数,void*free(void*p);,释放由malloc()和calloc()申请的内存块p是指向此块内存的指针free时系统标记此块内存为未占用,可被重新分配,Methodofdeallocatingmemory:,确保指针使用前是非空指针,释放向系统申请的存储空间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化创意产业园施工总承包与配套设施建设合同
- 离婚后共同财产分割及房产分配执行协议
- 网络直播平台签约主播才艺展示合作合同范本
- 多源数据融合预测方法-第1篇-洞察及研究
- 教育机构消防安全合规性评估及2025年整改实施报告
- 场地租赁合同经典版本2篇
- 智能家居交互界面适应性研究-洞察及研究
- 仓储协议(紫铜浮雕)6篇
- 农业生态系统服务的空间异质性与社会经济影响-洞察及研究
- 中秋知识竞赛试题及答案
- 辽宁省名校联盟2025年高三9月份联合考试 物理试卷(含答案解析)
- 新产程解读及产程管理
- 2025高职单招职业适应性测试题库与答案
- 2025至2030中国摩托车保险行业调研及市场前景预测评估报告
- Unit 1 How can I get there?(教学设计)-2024-2025学年人教PEP版英语六年级上册
- 中学生物学教学技能与实践课件
- 井喷失控事故案例教育-井筒工程处课件
- 《农产品质量安全》系列讲座(第一讲-农产品质量及安全)课件
- 日语教程单词表(任卫平版)
- 托业考试Toeic考题
- IPM原理及测试方法ppt课件
评论
0/150
提交评论