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数组里面的值一直都是初始值?有大神吗 展开
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数组里面的值一直都是初始值?有大神吗 展开
4个回答
展开全部
变量有全局变量和局部变量之分,要想子函数改变母函数的变量值有两种办法:
1是将变量定义成全局变量(在#include下面就定义),然后在子函数中直接使用变量名。
2是将指向该变量的指针当作参数传递给子函数。
1是将变量定义成全局变量(在#include下面就定义),然后在子函数中直接使用变量名。
2是将指向该变量的指针当作参数传递给子函数。
更多追问追答
追问
我这个Y[8]是在#include下面定义的,为什么不能改变他的值
追答
函数定义语句void rk(n,h)中n和h没有类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的程序恐怕连编译都不能通过吧,有语法错误。
更多追问追答
追问
我源程序能编译 这不是简化了 随便打得 主要是看数组值怎么变啊
追答
你最好把你的可以编译的程序贴上
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你那个h好像始终是0吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询