C 矩阵计算器错误-工作不正常
我的代码是建立一个矩阵计算器。我有一个矩阵数组,一个构建矩阵的函数,它得到一个指向所需矩阵的指针(6个之一)和一个指向进入矩阵的参数数组的指针。另一个功能是打印矩阵 问题是:我有这些矩阵:MAT_A,MAT_B……MAT_F。 当我向MAT_X输入参数时,它还显示了om MAT_X-1。例如,如果我将参数放入MAT_B,MAT_A也会以某种方式更新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
}
命令:读_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]);