C 矩阵计算器错误-工作不正常

C 矩阵计算器错误-工作不正常,c,pointers,debugging,matrix,C,Pointers,Debugging,Matrix,我的代码是建立一个矩阵计算器。我有一个矩阵数组,一个构建矩阵的函数,它得到一个指向所需矩阵的指针(6个之一)和一个指向进入矩阵的参数数组的指针。另一个功能是打印矩阵 问题是:我有这些矩阵:MAT_A,MAT_B……MAT_F。 当我向MAT_X输入参数时,它还显示了om MAT_X-1。例如,如果我将参数放入MAT_B,MAT_A也会以某种方式更新 } 命令:读_mat_B,1,2.3456,-7.89 命令:print_mat_B 结果: 矩阵为:/(矩阵B) 1.00 2.35-7.89

我的代码是建立一个矩阵计算器。我有一个矩阵数组,一个构建矩阵的函数,它得到一个指向所需矩阵的指针(6个之一)和一个指向进入矩阵的参数数组的指针。另一个功能是打印矩阵

问题是:我有这些矩阵:MAT_A,MAT_B……MAT_F。 当我向MAT_X输入参数时,它还显示了om MAT_X-1。例如,如果我将参数放入MAT_B,MAT_A也会以某种方式更新


}


命令:读_mat_B,1,2.3456,-7.89 命令:print_mat_B 结果: 矩阵为:/(矩阵B)

1.00 2.35-7.89 0.00

0.00 0.00 0.00 0.00

0.00 0.00 0.00 0.00

0.00 0.00 0.00 0.00

但与此同时,MAT_A: 命令:print_mat_A

0.00 0.00 0.00 0.00

1.00 2.35-7.89 0.00

0.00 0.00 0.00 0.00

0.00 0.00 0.00 0.00


(虽然它应该是全零)

如果您想收到
MAT
,您需要

void print_mat(MAT mat1){ // same as void print_mat(double mat1[N][N]){
而不是

void print_mat(MAT * mat1){ // You don't want a pointer to a 2D array
这里呢

printf("%.2f    ",*mat1[i][j]);
相反,您不想取消引用

printf("%.2f    ", mat1[i][j]);

同样适用于
read\u mat()

它可以工作!!非常感谢你!!!!!一个问题,为什么它不起作用。。。?我想发送一个指向函数的指针,而不是整个矩阵。。。为什么不那么好?数组在传递给函数时已经(衰减为)指针了,换句话说,如果您想设置数组的值足以传递数组,而不是他的地址,那么当您想更改指针本身的值(数组的地址或它指向的位置)时,您就传递了地址.编译器不会在这里抱怨不兼容的类型吗?这不是一个“打开编译器的警告”的问题吗?@PaulOgilvie,是的,在这种情况下它应该发出警告
void print_mat(MAT * mat1){ // You don't want a pointer to a 2D array
printf("%.2f    ",*mat1[i][j]);
printf("%.2f    ", mat1[i][j]);