我不明白为什么这段应该执行矩阵乘法的代码出错了。
输入: 2x2 矩阵,两个矩阵中都有元素 1,2,3,4
预期产量: 7 10 15 22
此代码给出的输出: 15 22 12 16
int a[10][10], b[10][10], c[10][10], i, j, k, r1, c1, r2, c2;
int (*pa)[10][10] = &a, (*pb)[10][10] = &b, (*pc)[10][10] = &c;
for ( i = 0; i < r1; i++) {
for(j = 0; j < c2; j++) {
*pc[i][j] = 0;
for(k = 0; k < c1; k++) {
*pc[i][j] += *pa[i][k] * *pb[k][j];
}
}
}
我尝试使用这样的打印语句进行调试,结果如下:
当给定以 1,2,3,4 作为元素的 2x2 矩阵时,会产生以下错误:
at 00 of a is 3
at 00 of b is 1
Elements you're multiplying: 3 1
但预期的输出是这样的:
at 00 of a is 1
at 00 of b is 1
(其他元素似乎也是如此) 此处未粘贴的其余代码没有错误。使用打印语句彻底检查它。