c语言如何在子函数中改变主函数数组值?

doubleY[8];main(){voidrk();/*调用rk函数*/inti,j;doubleh;/*h为步长*/fi=fopen("C:\\Users\\Admi... double Y[8];

main()
{
void rk(); /* 调用rk函数*/
int i,j;
double h; /* h为步长*/
fi=fopen("C:\\Users\\Administrator\\Desktop\\input2.dat","r");
for(i=0;i<8;i++)
fscanf(fi,"%lf",&Y[i]); /* 从文件中读取Y数组值*/
close(fi);
rk(8,h);

do{
rk(8,h);}
while(Y[6]<=100);
}
/* **********************************************************************************************/
void rk(n,h)
int n;
double h;
{
int i;

for(i=0;i<n;i++)
Y[i]=Y[i]+h;
return;
}
我的程序简化成上面,为什么Y数组里面的值一直都是初始值?有大神吗
展开
 我来答
tattackor
推荐于2018-02-27 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:862万
展开全部
两种方法.
一:
把a作为参数传递给sss();
int sss(int x)
{x ;
}这样仅仅只是使用a的值,是把a的值复制给x,使x的值等于a,可以在子函数中使用a的数值,但无法改变主函数中a的值.
二,
使用指针.声明一个指针指向a,把a的地址作为参数传递给子函数,那么在子函数中不但可以使用a的值还可以修改主函数中a的值.
千年老妖125
2014-08-24 · TA获得超过229个赞
知道答主
回答量:103
采纳率:0%
帮助的人:53.9万
展开全部
变量有全局变量和局部变量之分,要想子函数改变母函数的变量值有两种办法:
1是将变量定义成全局变量(在#include下面就定义),然后在子函数中直接使用变量名。
2是将指向该变量的指针当作参数传递给子函数。
更多追问追答
追问
我这个Y[8]是在#include下面定义的,为什么不能改变他的值
追答
函数定义语句void rk(n,h)中n和h没有类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5dd9698
推荐于2017-11-26 · TA获得超过128个赞
知道答主
回答量:21
采纳率:0%
帮助的人:19.2万
展开全部
你的程序恐怕连编译都不能通过吧,有语法错误。
更多追问追答
追问
我源程序能编译 这不是简化了 随便打得 主要是看数组值怎么变啊
追答
你最好把你的可以编译的程序贴上
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
户哲茂5B
2018-02-27 · TA获得超过817个赞
知道小有建树答主
回答量:781
采纳率:59%
帮助的人:130万
展开全部
你那个h好像始终是0吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式