将值分配给2D矩阵

时间:2014-02-25 11:41:32

标签: c

我需要处理2D矩阵,但经过一些分配后,一切都会出错。这基本上就是说明。

以下是代码:

int matA[1][1], matB[1][7], matRes[1][7];
    memset (matA, 0, sizeof (matA));
    memset (matB, 0, sizeof (matB));
    memset (matRes, 0, sizeof (matRes));
      printf("test0 :%d \n",matB[1][0]);
    //matrice de fonction
    matB[1][0]= 0;
      printf("test1 :%d \n",matB[1][0]);
    matB[1][1]= matB[0][2]= matB[0][3]= 0;
      printf("test2 :%d \n",matB[1][0]);
    matB[0][0]= matB[0][4]= matB[0][6]= matB[1][2]= matB[1][4]= matB[1][5]= 1;
      printf("test3 :%d \n",matB[1][0]);
    matB[0][1]= matB[0][5]= matB[0][7]= matB[1][3]= matB[1][6]= matB[1][7]= -1;
      printf("test4 :%d \n",matB[1][0]);
    //matrice d'entrée
    matA[0][1]= matA[1][0] = 0;
      printf("test5 :%d \n",matB[1][0]);
    matA[0][0]= X;
      printf("test6 :%d \n",matB[1][0]);
    matA[1][1]= Y;
      printf("test7 :%d \n",matB[1][0]);

输出:

test0 :0
test1 :0
test2 :0
test3 :0
test4 :-1
test5 :-1
test6 :3
test7 :3

请注意,X和Y是函数的2个参数。

1 个答案:

答案 0 :(得分:7)

int matB[1][7];
matB[1][0]= 0;

这不是matB的有效索引。它可能与用于matAmatRes的内存重叠。这就是为什么更改matA更改matB[1][0]