数组的指针和指向数组的指针变量.ppt

数组的指针和指向数组的指针变量.ppt

ID:48807319

大小:110.50 KB

页数:20页

时间:2020-01-27

数组的指针和指向数组的指针变量.ppt_第1页
数组的指针和指向数组的指针变量.ppt_第2页
数组的指针和指向数组的指针变量.ppt_第3页
数组的指针和指向数组的指针变量.ppt_第4页
数组的指针和指向数组的指针变量.ppt_第5页
资源描述:

《数组的指针和指向数组的指针变量.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第10章指针数组的指针和指向数组的指针变量字符串的指针和指向字符串的指针变量§10.3§10.410.2.3指针变量作为函数参数①主函数的实参,与函数中的形参均为指针变量,互相传递的是指针变量,属“单向地址值传递”. 在被调函数中,如果改变的是变量,则影响主函数若改变的是指针,则不影响主函数②以前未用指针变量时,函数调用时,实参与形参彼此互不影响,只从被调函数返回一个值return59959abcxy例如例如③指针变量作函数参数时,主函数可以从被调函数得到多个返回值,函数可以不要return()语句了。方法:1.在主函数中设n个变量,用n个指针

2、变量指向它们2.然后将指针变量作为实参,将这n个变量的地址传给被调函数的形参3.通过形参指针变量,改变这n个变量的值4.主函数中就可以使用这些改变了值的变量例子10.3.3数组名作函数参数数组名作为函数的实参和形参main(){intarray[10];……f(array,10);……}f(intarr[],intn){…}这种方式实际上是传递的数组的首地址。f(int*arr,intn)①数组元素作函数参数,与一般变量相同,是“单向值传递”②数组名作函数参数,是“单向地址传递”即实参数组与形参数组对应内存中同一个数组,调用时实参将数组首地址传

3、给形参。③数组名及指向数组的指针变量作函数参数,其作用是一样的。④数组名是可以即用的,而指针变量必须赋值后才能使用。⑤实参与形参有4种对应关系。例如10.3.43.多维数组的指针作函数参数例10.14有一个班,3个学生,各学4门课,计算总平均分数,及第n个学生的成绩。main(){voidaverage(float*p,intn);voidsearch(float(*p)[4],intn);floatscore[3][4]={{66,67,70,60},{80,87,90,81},{90,99,100,98}};average(*score,1

4、2);search(score,2);}voidaverage(float*p,intn){float*p_end;floatsum=0,aver;p_end=p+n-1;for(;p<=p_end;p++)sum=sum+(*p);aver=sum/n;printf("average=%5.2f",aver);}指向列的指针指向行的指针score[0]voidsearch(float(*p)[4],intn){inti;printf("thescoreofNo.%dare:",n);for(i=0;i<4;i++)printf("%d

5、5.2f",*(*(p+n)+i));}average=82.25thescoreofno.2are:99.00,99.00,100.00,98.0010.4.2字符串指针作函数参数10.4.2用函数调用实现字符串的复制用字符数组作函数参数,用数组名做实参。例10.20复制字符串voidcopy_string(charfrom[],charto[]){inti=0;while(from[i]!=''){to[i]=from[i];i++;}to[i]='';}main(){chara[]="Iamateacher.";charb[]="

6、youareastudent.";printf("stirnga=%sstringb=%s",a,b);copy_string(a,b);printf("stirnga=%sstringb=%s",a,b);}main(){char*a="Iamateacher.";char*b="youareastudent."printf("stirnga=%sstringb=%s",a,b);copy_string(a,b);printf("stirnga=%sstringb=%s",a,b);}用指向字符串的指针做实参(

7、2)形参用字符指针变量voidcopy_string(char*from,char*to){for(;*from!='';from++,to++)*to=*from;*to='';}main(){char*a="Iamateacher.";char*b="youareastudent."printf("stirnga=%sstringb=%s",a,b);copy_string(a,b);printf("stirnga=%sstringb=%s",a,b);}用指向字符串的指针做实参(3)对copy_string函数可以

8、简化voidcopy_string(char*from,char*to){for((*to=*from)!='';){to++;from++;}}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。