【精选】C语言数组名作函数参数.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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为形参数组名。在学习指针变量之后就更容易理解这个问题了。数组名就是数组的 首地址 ,实参向形参传送数组名实际上就是传送数组的地址 ,形参得到该地址后也指向同一数组。这就好 象同一件物品有两个彼此不同的名称一样。 同样 ,指针变量的值也是地址 ,数组指针变量的值即为数组的首地址 ,当然也可作为函数的参数使用。 【例10­15 】 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. } 【例10­16 】将数组a中的n个整数按相反顺序存放。 算法为 :将a[0]与a[n­1]对换 ,再a[1]与a[n­2] 对换 …… ,直到将a[(n­1/2)]与a[n­int((n­1)/2)]对换。今用循环 处理此问题 ,设两个“位置指示变量”i和j ,i的初值为0 ,j的初值为n­1。将a[i]与a[j]交换 ,然后使i的值加1 ,j 的值减1 ,再将a[i]与a[j]交换 ,直到i (n­1)/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改成指针变量。 【例10­17 】将函数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)

tazhiq2 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档