- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【精选】C语言数组名作函数参数
数组名可以作函数的实参和形参。如 :
01. main(){
02. int array[10];
03. /* …… */
04. /* …… */
05. f(array,10);
06. /* …… */
07. /* …… */
08. }
09.
10. f(int arr[],int n);
11. {
12. /* …… */
13. /* …… */
14. }
array为实参数组名 ,arr为形参数组名。在学习指针变量之后就更容易理解这个问题了。数组名就是数组的
首地址 ,实参向形参传送数组名实际上就是传送数组的地址 ,形参得到该地址后也指向同一数组。这就好
象同一件物品有两个彼此不同的名称一样。
同样 ,指针变量的值也是地址 ,数组指针变量的值即为数组的首地址 ,当然也可作为函数的参数使用。
【例1015 】
01. float aver(float *pa);
02. main(){
03. float sco[5],av,*sp;
04. int i;
05. sp sco;
06. printf(\ninput 5 scores:\n);
07. for(i 0;i5;i++) scanf(%f,sco[i]);
08. av aver(sp);
09. printf(average score is %5.2f,av);
10. }
11. float aver(float *pa){
12. int i;
13. float av,s 0;
14. for(i 0;i5;i++) s s+*pa++;
15. av s/5;
16. return av;
17. }
【例1016 】将数组a中的n个整数按相反顺序存放。
算法为 :将a[0]与a[n1]对换 ,再a[1]与a[n2] 对换 …… ,直到将a[(n1/2)]与a[nint((n1)/2)]对换。今用循环
处理此问题 ,设两个“位置指示变量”i和j ,i的初值为0 ,j的初值为n1。将a[i]与a[j]交换 ,然后使i的值加1 ,j
的值减1 ,再将a[i]与a[j]交换 ,直到i (n1)/2为止 ,如图所示。
程序如下 :
01. void inv(int x[],int n) /*形参x是数组名*/{
02. int temp,i,j,m (n-1)/2;
03. for(i 0;i m;i++){
04. j n-1-i;
05. temp x[i];x[i] x[j];x[j] temp;
06. }
07. return;
08. }
09. main(){
10. int i,a[10] {3,7,9,11,0,6,7,5,4,2};
11. printf(The original array:\n);
12. for(i 0;i10;i++)
13. printf(%d,,a[i]);
14. printf(\n);
15. inv(a,10);
16. printf(The array has benn inverted:\n);
17. for(i 0;i10;i++)
18. printf(%d,,a[i]);
19. printf(\n);
20. }
对此程序可以作一些改动。将函数inv中的形参x改成指针变量。
【例1017 】将函数inv中的形参x改成指针变量。程序如下 :
01. void inv(int *x,int n){ /*形参x为指针变量*/
02. int *p,temp,*i,*j,m (n-1)/2;
03. i x;j x+n-1;p x+m;
04. for(;i p;i++,
文档评论(0)