C语言程序设计第45讲-指向一维数组的指针变量课件

上传人:txadgkn****dgknqu... 文档编号:241736469 上传时间:2024-07-19 格式:PPT 页数:15 大小:125.72KB
返回 下载 相关 举报
C语言程序设计第45讲-指向一维数组的指针变量课件_第1页
第1页 / 共15页
C语言程序设计第45讲-指向一维数组的指针变量课件_第2页
第2页 / 共15页
C语言程序设计第45讲-指向一维数组的指针变量课件_第3页
第3页 / 共15页
点击查看更多>>
资源描述
学习目标(1)掌握指向一维数组的指针的用法。(2)掌握指向数组的指针作为函数参数传递的用法。(1)掌握指向一维数组的指针的用法。C Programming Language指针与数组指针与数组v指针与数组的关系十分密切,数组名本身就是一个常量指针。当定义数组时,其首地址就已确定不再改变。v通过使用指针变量来指向数组中的不同元素,可使程序效率更高,执行速度更快。例如,对于数组arr10,数组名arr等效于地址&arr0。因此,可以将数组名arr看做一个指针,它永远指向arr0。指针与数组指针与数组的关系十分密切,数组名本身就是一个常量C Programming Language指向一维数组的指针变量一个数组存储在一块连续内存单元中;数组名就是这块连续内存单元的首地址;第(i+1)个数组元素的地址可表示为&datai或(data+i)。可以通过以下方式为指向数组的指针赋值:int*pa,a10;pa=&a0;/*或者 pa=a;*/一个指针变量可以指向一个数组元素 int*ptr,data10;ptr=data+3;/*或者ptr=&data3*/指向一维数组的指针变量一个数组存储在一块连续内存单元中;数组C Programming Languagept+n与a+n表示数组元素an的地址,即&an。v若指针变量pt已指向数组中的一个元素,则pt+1指向同一数组中的下一元素。vpt+1所代表的地址值是pt+1d,d是每个数组元素所占的字节数。假设pt指向了一维数组a,那么C语言规定指针对数组的表示方法有如下几种。数组apt+2a+npt+na0pta1a2anapt+1a+1a+2pt+n与a+n表示数组元素an的地址,即&an。C Programming Language*(pt+n)和*(a+n)表示pt+n或a+n指向的数组元素值,即等效于an。v在编译时,对数组元素ai就是处理成*(a+i)。v在C语言中是“变址运算符”,即将ai按a+i计算出地址,然后找出该地址单元的值。假设pt指向了一维数组a,那么C语言规定指针对数组的表示方法有如下几种。数组a*(pt+2)*(a+n)*(pt+n)a0*(pt+0)a1a2an*(a+0)*(pt+1)*(a+1)*(a+2)*(pt+n)和*(a+n)表示pt+n或a+n指向的数组C Programming Language指向数组的指针变量也可用数组的下标形式表示为ptn,其效果相当于*(pt+n)。引用一个数组元素的方法:下标法:即ai的形式。地址法:*(a+i)。其中a是数组名。指针法:即*(pt+i)或pti。其中pt是指向数组a的指针变量。假设pt指向了一维数组a,那么C语言规定指针对数组的表示方法有如下几种。指向数组的指针变量也可用数组的下标形式表示为ptn,其C Programming Language指针变量可以实现本身的值的改变,这一点与数组名不同。如p+是合法的;而a+是错误的。指针变量可以指到数组以后的内存单元,系统并不认为非法,因此使用指针变量指向数组元素时,要特别注意指针变量所指向的位置。注意事项指针变量可以实现本身的值的改变,这一点与数组名不同。如p+C Programming Language#include main()int*p,i,a10;p=a;for(i=0;i10;i+)*p+=i;/*等价于*p=i;p+;*/for(i=0;i10;i+)printf(%6d,*p+);程序运行结果:-222851 -242282-200 14917 21596 23619【例1】为数组a赋值后输出数组a的所有元素值。#include 程序运行结果:【例1】为C Programming Languagemain()int*p,i,a10;p=a;for(i=0;i10;i+)*p+=i;p=a;/*在输出前使p重新指向数组a的首地址*/for(i=0;i10;i+)printf(%6d,*p+);程序运行结果:0123456789改正后的程序main()程序运行结果:改正后的程序C Programming Language*p+等价于*(p+)。若p当前指向a数组中的第i个元素,则*(+p)相当于a+i,*(p-)相当于ai-;*(-p)相当于a-i。*(p+)与*(+p)作用不同。若p的初值为a,则*(p+)等价a0,*(+p)等价a1。(*p)+表示p所指向的元素值加1。指针变量与自增自减运算符同时出现时的用法*p+等价于*(p+)。若p当前指向a数组中的第i个C Programming Language数组指针作函数参数v数组名就是数组的首地址,实参向形参传送数组名实际上就是传送数组的地址,形参得到该地址后也指向同一数组。v指针变量的值也是地址,也可以作为函数的参数进行传递。数组指针作函数参数数组名就是数组的首地址,实参向形参传送数组C Programming Language#include main()int i,a10,*pt=a,max;printf(please input array a:n);for(i=0;i10;i+)scanf(%d,&ai);max=sub_max(pt,10);printf(max=%dn,max);程序运行结果:please input array a:2 5 1 7 6 8 4 3 9 0max=9【例2】求一维数组中的最大值,要求求最大值的功能通过函数实现。int sub_max(int b,int n)int temp,i;temp=b0;for(i=1;in;i+)if(tempbi)temp=bi;return temp;#include 程序运行结果:【例2】求C Programming Languagemain()int i,a10,*pt=a,max;printf(please input array a:n);for(i=0;i10;i+)scanf(%d,&ai);max=sub_max(pt,10);printf(max=%dn,max);上述程序也可采用指针变量作sub_max函数的形式参数。int sub_max(int*b,int n)int temp,i;temp=b0;/*bi等价于*(b+i)*/for(i=1;in;i+)if(tempbi)temp=bi;return temp;main()上述程序也可采用指针变量作sub_max函数的形C Programming Language上述程序的sub_max函数中,数组元素还可以用指针表示。main()int i,a10,*pt=a,max;printf(please input array a:n);for(i=0;i10;i+)scanf(%d,&ai);max=sub_max(pt,10);printf(max=%dn,max);int sub_max(int*b,int n)int temp,i;temp=*b+;/*temp=*b;b+;*/for(i=1;in;i+)if(temp*b)temp=*b;b+;return temp;上述程序的sub_max函数中,数组元素还可以用指针表示。m小结(1)指针对数组的表示方法。下标法:即ai的形式。地址法:*(a+i)。其中a是数组名。指针法:即*(pt+i)或pti。其中pt是指向数组a的指针变量。(2)指向数组的指针作为函数参数传递的用法。小结(1)指针对数组的表示方法。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!