1 //code by zzlpp 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 void matrix_multiply( int *m1,int *m2,int *r, 6 int const x,int const y,int const z ); 7 8 9 int main( void ) 10 { 11 //初始化原始矩阵 12 int m1[3][1]={1,2,3}, 13 m2[1][3]={3,2,1}, 14 r[3][3]={{},{},{}}; 15 16 int i, 17 j; 18 //调用函数 19 matrix_multiply(*m1,*m2,*r,3,1,3); 20 //打印得到的矩阵 21 for ( i=0;i<3;i++ ) 22 { 23 for ( j=0;j<3;j++ ) 24 { 25 printf("%d ",r[i][j]); 26 } 27 printf(" "); 28 } 29 system( "pause" ); 30 return 0; 31 } 32 33 void matrix_multiply( int *m1,int *m2,int *r, 34 int const x,int const y,int const z ) 35 { 36 int row, //对应x 37 column, //对应y 38 direction; //对应z 39 int *m1_cpy, 40 *m2_cpy; 41 for ( row=0;row<x;row++ ) 42 { 43 for ( direction=0;direction<z;direction++ ) 44 { 45 m1_cpy=m1+row*y; 46 m2_cpy=m2+direction; 47 for ( column=0;column<y;column++ ) 48 { 49 *r+=(*m1_cpy)*(*m2_cpy); 50 m1_cpy+=1; 51 m2_cpy+=direction; 52 } 53 r++; 54 } 55 } 56 }
这个代码主要是熟悉多维数组,在函数传递的时候要注意方法,同时在函数中操作多维数组也需要方法,这里如果使用下表引用是行不通的,必须设置一个专门的变量当做下表使用(如文中的row,column,direction)。当然我的认识是片面的,多多海涵。