我需要处理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个参数。
答案 0 :(得分:7)
int matB[1][7];
matB[1][0]= 0;
这不是matB
的有效索引。它可能与用于matA
或matRes
的内存重叠。这就是为什么更改matA
更改matB[1][0]
。