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("\n");
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)。当然我的认识是片面的,多多海涵。