| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1302 人关注过本帖
标题:数组指针变量形参与实参的传递
只看楼主 加入收藏
a2388089233
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-5-29
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
数组指针变量形参与实参的传递
#include  <stdlib.h>
#include  <stdio.h>
#define   N   10
double fun(double  *x)
{ int  i, j;    double  av, y[N];
  av=0;
  for(i=0; i<N; i++)
/**********found**********/
    av+=x[i]/N;
  for(i=j=0; i<N; i++)
    if( x[i]<av ){
      y[j]=x[i]; x[i]=-1;
/**********found**********/
      j++;
    }
  i=0;
  while(i<N)
  {  if( x[i]!= -1 ) y[j++]=x[i];
/**********found**********/
     i++;
  }
  for(i=0; i<N; i++)x[i] = y[i];
  return  av;
}
main()
{ int  i;     double  x[N];
  for(i=0; i<N; i++){ x[i]=rand()%50; printf("%4.0f ",x[i]);}
  printf("\n");
  printf("\nThe average is: %f\n",fun(x));
  printf("\nThe result :\n",fun(x));
  for(i=0; i<N; i++)  printf("%5.0f ",x[i]);
  printf("\n");
}
子程序中x[i]应该是主程序中x[i]的地址还是其值?为什么
搜索更多相关主题的帖子: include double return 
2017-05-29 01:34
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:10 
double x[N]; x是N个double类型的数组名,x[i]是x的元素,该元素的地址是&x[i]。
fun函数参数double *x; x是double类型指针,传入的是x数组首个元素的首地址x,即&x[0]。
2017-05-29 06:23
何小达
Rank: 2
等 级:论坛游民
威 望:1
帖 子:24
专家分:70
注 册:2017-5-25
收藏
得分:10 
在你这个程序中,主函数中的x数组和子函数的x数组是共享同一个地址的,一旦子函数中的x地址发生改变,主函数的也会改变。只有在子函数中的x数组把指向改变下,那子函数中的数组就与主函数中的x数组没有关系。
2017-05-29 20:43
快速回复:数组指针变量形参与实参的传递
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024232 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved