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