我在将值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]);
}
}
}
感谢您提供任何反馈意见!
答案 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);