C-将全局数组复制到本地数组,改为分配索引
当我试图将全局数组变量复制到局部数组变量时,由于某种原因,这些数组的索引被分配了。我已经检查了这些数组和索引的地址,并确保它们的地址不重叠 这是我的密码:C-将全局数组复制到本地数组,改为分配索引,c,arrays,for-loop,C,Arrays,For Loop,当我试图将全局数组变量复制到局部数组变量时,由于某种原因,这些数组的索引被分配了。我已经检查了这些数组和索引的地址,并确保它们的地址不重叠 这是我的密码: int ap0[3][4]; rotateboard() { // rotate it counterclockwise. int board[3][4]; int i,j; for ( i=0;i<=3;i++) //Save on a parallel array {
int ap0[3][4];
rotateboard()
{
// rotate it counterclockwise.
int board[3][4];
int i,j;
for ( i=0;i<=3;i++) //Save on a parallel array
{
printf("%d\n", i);
for (j=0;j<=3;j++)
{
board[3-j][i] = ap0[i][j];
printf ("%d,%d, %d = %d \n" , i, j, board[3-j][i] , ap0[i][j]);
//this is the debug line I have inserted later
}
}
for ( i=0;i<=3;i++) // reload saved data
{
for (j=0;j<=3;j++)
{
ap0[i][j] = board[i][j];
}
}
}
如您所见,在i=2,j=0时,a[2][0](即9)的值被分配给变量j,而不是board[2][0]。[3][0]处的变量i也会发生同样的情况。
我不知道那里发生了什么。有人能帮我解决这个问题吗?你的数组索引到处都是。值得注意的是,如果您想迭代一个包含3个项目的数组,您需要对(inti=0;i实际上,我想循环4个项目,而不是3个项目)执行
for
是一个自定义函数,它仍然有效。那么你可能需要分配4个项,而不是3个……哦,就是这样。谢谢你,你的数组索引到处都是。值得注意的是,如果你想迭代一个包含3个项的数组,你需要对(int i=0;i实际上,我想循环4个项,而不是3个项。rotateboard()
是自定义函数,它仍然有效。然后您可能需要分配4项,而不是3项…哦,就是这样。谢谢
0
0,0, 1 = 1
0,1, 2 = 2
0,2, 3 = 3
0,3, 4 = 4
1
1,0, 5 = 5
1,1, 6 = 6
1,2, 7 = 7
1,3, 8 = 8
2
2,9, 1 = 0
3
13,0, 0 = 0
13,1, 0 = 0
13,2, 0 = 0
13,3, 0 = 0