0

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

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

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

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]);
    }
  }
}

感谢您的任何反馈!

4

2 回答 2

0

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

于 2013-03-08T16:55:23.757 回答
0
  check=dvector(n*T);

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

这里 check 的长度为 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];
于 2013-03-08T16:44:44.523 回答