在函数中更改二维数组的值
Change values of 2D array in function
如果我将函数内容放到主块中,下面的代码可以很好地工作,但是函数在这里完全失败了。我目前收到 'subscripted value is neither array nor pointer nor vector' 错误。我还收到“从不兼容的指针类型传递 'accumulate' 的参数 1 和 4”错误。
void accumulate( double sum[], int ypos[], int xpos[], int vals[], int numvals )
{
for(int i=0 ; i<numvals ; i++) /// start looping over indices
{
sum[ypos[i]][xpos[i]] += vals[i];
}
}
int main()
{
int xpos[2] = {0,1};
int ypos[2] = {0,1};
double vals[2] = {1.01,7};
int numvals = 2;
int size = 6;
double sum[size][size];
for(int i=0; i<size ;i++)
{
for(int j=0; j<size ; j++)
{
sum[i][j] = 0; // make zeros
}
}
accumulate(sum,ypos,xpos,vals,numvals); // doesn't work
for(int i=0; i<size ;i++)
{
for(int j=0; j<size ; j++)
{
printf("%f ", sum[i][j]);
}
printf("\n");
}
}
2d 数组传递给衰减为 T (*)[COLS]
的函数。或者你可以写
void func( int col, int arr[][col]);
所以你会写
void accumulate( double sum[][size], int ypos[], int xpos[], int vals[], int numvals )
{
...
}
你还应该知道 ypos[i]
和 xpos[i]
应该在数组 size
的限制内,这样你就不会 运行 进入未定义的行为。
如果我将函数内容放到主块中,下面的代码可以很好地工作,但是函数在这里完全失败了。我目前收到 'subscripted value is neither array nor pointer nor vector' 错误。我还收到“从不兼容的指针类型传递 'accumulate' 的参数 1 和 4”错误。
void accumulate( double sum[], int ypos[], int xpos[], int vals[], int numvals )
{
for(int i=0 ; i<numvals ; i++) /// start looping over indices
{
sum[ypos[i]][xpos[i]] += vals[i];
}
}
int main()
{
int xpos[2] = {0,1};
int ypos[2] = {0,1};
double vals[2] = {1.01,7};
int numvals = 2;
int size = 6;
double sum[size][size];
for(int i=0; i<size ;i++)
{
for(int j=0; j<size ; j++)
{
sum[i][j] = 0; // make zeros
}
}
accumulate(sum,ypos,xpos,vals,numvals); // doesn't work
for(int i=0; i<size ;i++)
{
for(int j=0; j<size ; j++)
{
printf("%f ", sum[i][j]);
}
printf("\n");
}
}
2d 数组传递给衰减为 T (*)[COLS]
的函数。或者你可以写
void func( int col, int arr[][col]);
所以你会写
void accumulate( double sum[][size], int ypos[], int xpos[], int vals[], int numvals )
{
...
}
你还应该知道 ypos[i]
和 xpos[i]
应该在数组 size
的限制内,这样你就不会 运行 进入未定义的行为。