我无法将数组从main传递给特定函数

时间:2013-03-07 13:45:40

标签: arrays

我在将值main()传递给函数method()时遇到问题。 我有变量“selected”,它被填充在名为version()的其他函数中; selected是二维矩阵。然后我将这些值分配给名为check的一维矩阵:

check[1]=selected[1][1]
check[2]=selected[1][2]
.
.
.
check[190]=selected[19][10].

然后我需要在函数method()中使用向量“check”,这就是我的问题......我无法正确传递...

int main()
{
  double **selected;
  version(&selected);

  double *check;
  check=dvector(n*T);

  for(v=1;v<=n;v++) {
    for(t=1;t<=T;t++){
       check[v]=selected[v][t];
    }
  }

  method(check);

}

void version(selected)
double ***selected;
{
  *selected=dmatrix(n,T,1,1);
   .
   .
   .
  for(v=1;v<=n;v++) {
    for(t=1;t<=T;t++){
      (*selected)[v][t]=xd[v][point[v][t]];
    }
  }
}

void method(check)
double *check;
{

  for(v=1;v<=n;v++) {
    for(t=1;t<=T;t++){
      printf("check[%u]=%f\n",v,check[v]);
    }
  }
}

感谢您提供任何反馈意见!

2 个答案:

答案 0 :(得分:0)

  check=dvector(n*T);

  for(v=1;v<=n;v++) {
    for(t=1;t<=T;t++){
       check[v]=selected[v][t];
    }
  }

这里检查的长度为n * T,但后面的v是从1到n,因此只有check的前n个元素得到一个值,所有其他元素都是未定义的。对于零偏移数组,v将被v * T + t正确替换,但这里的偏移量为1,它是(v-1)* T +(t-1)+1: -

       check[v*T-T+t]=selected[v][t];

答案 1 :(得分:0)

当您将数组传递给函数时,无需提供&。数组始终作为参考传递。 marsversions(selected);