写了一个二阶矩阵乘法的程序,自己用程序里面的公式手算了几个没问题,但是程序运行结果有几个是错的



```c++


void matrix_multiply( int *m1,int *m2,int *r,int x,int y,int z)
{
    int buf3[x][z];
    int *p1,*p2,*r1;
    int i=0,j,k,l;
    int temp=0;
    p1=m1;
    p2=m2;
    r1=&buf3[0][0];
   
   

   for(i=1;i<=x;i++)
   {
       for(j=1;j<=z;j++)
       {
           
            for(k=1;k<=y;k++)    
            
        {
            *(r1+(i-1)*z+(j-1))=*(r1+(i-1)*z+(j-1))+(*(p1+(i-1)*y+(k-1))*(*(p2+(k-1)*z+(j-1))));
         } 
       }
   }
for(i=0;i<(x*z);i++)
{
    printf("%d is r1\n",*(r1+i));
        
}


    
}





int main()
{
  /* float  a;
    printf("please enter your salary number\n");
    scanf("%f",&a);
    printf("%f  is a\n",a);
    single_tax(a);*/
    int buf4[3][4];
    int buf1[3][2]={ 2,-6,3,5, 1,-1};
    int buf2[2][4]={4,-2,-4,-5,-7,-3,6, 7};
    matrix_multiply(*buf1,*buf2,*buf4,3,2,4);
    
    
}

```

运行结果是:50 14 20 -52
-19 -21 4200499 20
807499 1 -695122009 32751
正确结果是: 50 14 -44 -52
-23 -21 18 20
11 1 -10 -12

matrix_multiply 参数错了 前2个要int**,然后函数内写的有点复杂,你可以直接用二维数组形式表示