C语言中函数数组调用问题

定义的二维数组为全局变量,在主函数中有多个子函数要用到它。请问下大家,子函数中计算的此二维数组的值间能传递么?还是也需要调用呢?~~

可以传引用或者指针,或者定义为全局变量。那就直接用不用传了。

你用全局变量,每个函数里面都可以改啊。

传递数组地址或指针,C中没有引用

全局的直接访问就行了,就是要注意不要把里面的数据乱改,导致读取出问题

你使用全局变量,每个函数都可以去访问它并且修改它,会导致读写不一致!能少用全局变量,还是少用!

void fenpei(FILE *ffp)
{int i,j,k,l;

for(i=0;i<popsize;i++)
{
for(j=0;j<M;j++)
{
for(k=0;k<N;k++)
{
for(l=0;l<N;l++)
{
if(a[j][k]==oldpop[i].chrom[l])

** J[j][l]=1;**
else
** J[j][l]=0;**
}
}
}
}
}

void calculateobjectfitness() //计算染色体个体适应值
{

int i,j,s,r,x;
int H[M];

int u[N]={1,1,2,1,3,1,1,2,1,2,1,1};
int v[N];

for(i=0;i<popsize;i++)
{
oldpop[i].fitness=0.0;
for(s=0;s<N;s++)
{
r=oldpop[i].chrom[s]-1;
v[s]=u[r];

}

for(j=0;j<M;j++)

{
int p=0;
while**(J[j][p]!=1**&&p<12)
{
p++;
}
x=1;
H[j]=v[p];

     while(x<T[j]&&p<12)
     {
         p++;
         H[j]=H[j]+v[p];
         if(**J[j][p]==1**)
         x++;
     }
      oldpop[i].fitness=oldpop[i].fitness+H[j]*c[j];     //个体适应度计算
  }

}
}

题目中说的两个子函数如上,void fenpei(FILE*ffp),和void calculate(),

目标是想把fenpei()计算得到的 J[][] 这个二维数组的值传递到下个子函数calculate()中, J[][]已经定义成全局变量了,可是数值却传递不过去,整个主函数中只有这两个子函 数有涉及到J[][]的计算。。。。还是很疑惑的~